gpt4 book ai didi

swift - 为什么我的 VFL 不工作?

转载 作者:搜寻专家 更新时间:2023-10-30 23:15:12 28 4
gpt4 key购买 nike

我有以下代码,我正在尝试实现添加到垂直 ScrollView 的动态图像。我想要它的约束,以便图像将自身设置在 ScrollView 的边界内。

但是结果是图像似乎保持其原始大小(比 ScrollView 大,因此图像被裁剪)

代码如下:

@IBOutlet weak var myScrollView: UIScrollView!
private let lettersModel:LettersModel = LettersModel();
private var imgs = [UIImageView]();

override func viewDidLoad() {
super.viewDidLoad()

myScrollView.backgroundColor = UIColor.brownColor()

for var index=0; index<1; index++
{

let myImage:UIImage = UIImage(named: lettersModel.getLetterAt(index))!
let myImageView:UIImageView = UIImageView()
myImageView.image = myImage
myImageView.contentMode = UIViewContentMode.ScaleAspectFit

myScrollView.addSubview(myImageView)

myImageView.translatesAutoresizingMaskIntoConstraints = false;

myScrollView.addConstraints(NSLayoutConstraint.constraintsWithVisualFormat("H:|-[myImageView]-|", options: [], metrics: nil, views:["myImageView":myImageView] ))

imgs.append(myImageView)

}

}

enter image description here

最佳答案

UIView 位于 UIScrollView 内,无法根据其父级调整大小。您可以在 UIScrollView 中创建一个 UIView 并在 layoutSubviews 中更新宽度,然后将所有 UIView 添加到该 UIView 中。以下是您可以如何做到这一点:(为此,您需要设置 UIScrollView 的 contentSize 的高度,但您还必须设置它以使其滚动。)

class MyScrollView : UIScrollView {

let contentView = UIView()

override init (frame : CGRect) {
super.init(frame : frame)
addSubview(contentView)
}

convenience init () {
self.init(frame:CGRect.zero)
}

required init(coder aDecoder: NSCoder) {
fatalError("This class does not support NSCoding")
}

override func layoutSubviews() {
contentView.frame.size.width = frame.width
contentView.frame.size.height = contentSize.height
super.layoutSubviews()
}
}

var myScrollView = MyScrollView(frame: CGRect(x: 0, y: 0, width: 400, height: 600))
var imgs = [UIImageView]();

let myImage = UIImage(named: "achtergrond")
let myImageView:UIImageView = UIImageView()
myImageView.image = myImage
myImageView.contentMode = UIViewContentMode.ScaleAspectFit

myScrollView.contentSize.height = 1000 // <-- setting the contentSize
myScrollView.contentView.addSubview(myImageView) // <-- You add the UIImageView to the contentView

myImageView.translatesAutoresizingMaskIntoConstraints = false;
myScrollView.addConstraints(NSLayoutConstraint.constraintsWithVisualFormat("H:|-[myImageView]-|", options: [], metrics: nil, views:["myImageView":myImageView] ))

imgs.append(myImageView)

关于swift - 为什么我的 VFL 不工作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35961995/

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