我有一个水平堆栈 View 。我以编程方式将 UIViews 添加到堆栈 View 。添加的 UIViews 还包含第三个 View ,一个 UIImageView。 UIImageView 以编程方式缩放到较小的尺寸(高度 = 宽度 = StackView 的高度)。
我想将 UIImageView 置于 UIView 的中心。但是在将 UIImageView 添加到 UIView 之后,UIView 没有分配任何大小,我不知道如何正确地居中。
我尝试添加灵活的边距并测试了一些约束。
我还有哪些其他选择?
let wrapView = UIView()
let image = images[i]
let imageView = UIImageView(image: image)
imageView.contentMode = .ScaleAspectFit
wrapView.addSubview(imageView)
miniPicturesView.addArrangedSubview(wrapView)
图像相关:蓝色方 block 应该在矩形的中心。 正方形是 UIImageView,长方形是 UIView。三个 UIView 位于水平堆栈 View 中。
最佳答案
我相信您可以使用自动布局来做一些事情,但是当您有一个包含需要在其中定位的 subview 的 View 时,在我看来子类化 UIView 是更好的方法。 (这两种方法并不排斥,如果需要,您可以在子类中使用自动布局)
您的环绕 View 可以是以下 CenterView 类的一个实例:
class CenterView : UIView
{
var subView: UIView
init (fromUIView view: UIView)
{
self.subView = view;
super.init(frame: CGRect(x: 0,y: 0,width: 0,height: 0));
self.addSubview(self.subView);
}
required init?(coder aDecoder: NSCoder) {
fatalError("init(coder:) has not been implemented")
}
override func layoutSubviews()
{
self.subView.center = CGPoint(x: self.bounds.width / 2, y: self.bounds.height / 2)
}
}
在通过将 UIImageView 传递给构造函数来构造 CenterView 之后,它将使 UIImageView 保持在其自身的中心位置。
关于iOS9:在另一个以编程方式添加的 View 中居中以编程方式添加的 View ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34182864/