#ios #swift #xcode #uiscrollview
#iOS #swift #xcode #uiscrollview
Вопрос:
Я пытаюсь выровнять свои изображения по вертикали в моем ScrollView. К сожалению, я не могу понять, в чем проблема. Я думаю, что это что-то математическое, и это не моя сильная сторона. 🙁
Я надеюсь, что кто-нибудь сможет мне помочь с этой проблемой. Я также предоставлю свой код и изображение проблемы ниже:
//
// muscleListVC.swift
// ActiveRest
//
// Created by Fhict on 04/10/16.
// Copyright © 2016 Kevin Vugts. All rights reserved.
//
import UIKit
class muscleListVC: UIViewController {
var images = [UIImageView]()
@IBOutlet weak var scrollView: UIScrollView!
override func viewDidLoad() {
super.viewDidLoad()
print("Count: (images.count)")
}
override func viewDidAppear(_ animated: Bool) {
super.viewDidAppear(animated)
var contentHeight: CGFloat = 0.0
let scrollHeight = scrollView.frame.size.height
for x in 0...4 {
let image = UIImage(named: "muscle(x).png")
let imageView = UIImageView(image: image)
images.append(imageView)
var newX: CGFloat = 0.0
newX = scrollHeight / 4 scrollHeight * CGFloat(x) / 4
print("the size is (newX)")
contentHeight = newX
scrollView.addSubview(imageView)
imageView.frame = CGRect(x: 0, y: newX, width: view.frame.size.width, height: 166)
print("the content height: (contentHeight)")
scrollView.contentSize = CGSize(width: scrollView.frame.size.width, height: contentHeight)
}
scrollView.clipsToBounds = false
}
}
Большое вам спасибо! <3
Комментарии:
1. Не понимаю вашей проблемы, что не так в предоставленном изображении?
2. @BharatModi изображения должны быть в верхней позиции 0. В настоящее время они расположены немного ниже верхней части рамки.
3. Какие ограничения вы установили для ImageView, а также каковы ваши фактические требования, если количество изображений является динамическим, и вам нужно, чтобы они прокручивались по вертикали, тогда почему бы вам не использовать TableView?
4. И я предлагаю не устанавливать размер высоты / содержимого прокрутки вручную, пусть автоматический макет сам вычисляет его на основе содержимого внутри него.
5. @BharatModi ограничения установлены для всех краев экрана. Таким образом, он будет соответствовать всем размерам мобильных устройств. Количество изображений динамическое, да. Я хотел бы использовать вид прокрутки для этой цели, если это возможно. : D
Ответ №1:
Я не совсем уверен, что вы собираетесь делать, но я попытался немного изменить ваш код, чтобы заставить его работать.
override func viewDidLoad() {
super.viewDidLoad()
let numberOfImages = 5
let imageViewHeight:CGFloat = 166.0
scrollView.contentSize = CGSize(width: view.frame.size.width, height: imageViewHeight*(CGFloat)(numberOfImages))
var newY:CGFloat = 0
for x in 0...(numberOfImages-1) {
let image = UIImage(named: "muscle(x).png")
let imageView = UIImageView(image: image)
images.append(imageView)
imageView.frame = CGRect(x: 0, y: newY, width: view.frame.size.width, height: imageViewHeight)
newY = newY CGFloat(imageViewHeight)
scrollView.addSubview(imageView)
}
}
Комментарии:
1. Привет, сэр, это почти то, что я ищу, за исключением одной вещи. Изображение 4 не отображается. и он все еще не в правильном положении. (y: 0)
2. Также прокрутка исчезла
3. У вас есть пять изображений?
4. Я решил это: у меня есть 5 изображений, которые я добавил в эту строку кода:
5. Звучит неплохо. Я также рекомендую вам прочитать это руководство , в котором очень хорошо объясняется UIScrollView с автозапуском.