gpt4 book ai didi

Swift - 视觉约束不起作用

转载 作者:行者123 更新时间:2023-11-30 13:36:56 24 4
gpt4 key购买 nike

我有一个以编程方式实例化的 ScrollView 。我想要做的是添加约束,以便它在水平和垂直方向上看起来都很好。约束不起作用的问题

它垂直的样子 - 很好

enter image description here

水平方向看起来如何 - 不好

enter image description here

代码如下

class FAPhoto: UIViewController, UIScrollViewDelegate {

var imageURLsArray = [String]()
var imageViews:[UIImageView] = []
var arrayOfPhotos = [Photo]()
var scrollView = UIScrollView()

override func viewDidLoad() {
super.viewDidLoad()
scrollView = UIScrollView(frame: self.view.frame)
view.addSubview(scrollView)
scrollView.contentSize = CGSizeMake(view.frame.size.width * CGFloat(arrayOfPhotos.count), scrollView.frame.size.height)
scrollView.pagingEnabled = true
for (var i = 0; i < arrayOfPhotos.count; i++) {
var imageView = UIImageView()
imageView.frame = CGRectMake(CGFloat(i) * view.frame.size.width, scrollView.frame.origin.y, scrollView.frame.size.width, scrollView.frame.size.height)
imageView.contentMode = .ScaleAspectFit
let image = imageView.hnk_setImageFromURL(NSURL(string: arrayOfPhotos[i].url!)!)
scrollView.addSubview(imageView)


}

}

override func viewWillAppear(animated: Bool) {

}

override func viewWillLayoutSubviews() {
let bindings = Dictionary(dictionaryLiteral: ("scrollView", self.scrollView))

let horizontalConstraints =
NSLayoutConstraint.constraintsWithVisualFormat(
"H:|-0-[scrollView]-0-|",
options: [],
metrics: nil,
views: bindings)
self.view.addConstraints(horizontalConstraints)

let verticalConstraints =
NSLayoutConstraint.constraintsWithVisualFormat(
"V:|-0-[scrollView]-0-|",
options: [],
metrics: nil,
views: bindings)
self.view.addConstraints(verticalConstraints)
}
}

最佳答案

问题是您在viewDidLoad中设置了scrollViewcontentSize和imageView的框架。这对于纵向模式来说没问题,但是当 View 旋转到横向时,它的框架也会发生变化,因此您必须相应地更新这些值。我认为你在这里有 3 个机会。

  • 跟踪旋转事件并在 View 旋转时更新 scrollView 和 imageView 框架的 contentSize
  • scrollView 使用自动布局。您不必计算 contentSize 或设置 imageView 的框架,只需在 viewDidLoad 中设置一次约束即可。在这里您可以找到一些示例https://stackoverflow.com/a/20232911/4757335 .
  • 使用UICollectionView而不是UIScrollView。它更容易处理旋转。

关于Swift - 视觉约束不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35963088/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com