[英]iOS9: Centering programmatically added view inside another programmatically added view
我有一个水平的stackview。 我以编程方式将UIViews添加到stackview。 添加的UIViews还包含第三个视图,即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)
相关图片:蓝色正方形应位于矩形的中心。 正方形是UIImageView,矩形是UIView。 三个UIView位于水平stackview中。
我确定您可以使用自动布局来做一些事情,但是在您的视图中需要放置子视图时,我认为对UIView进行子类化是一种更好的方法。 (这两种方法不是唯一的,如果需要,可以在子类中使用自动布局)
您的环绕视图可以是以下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保持居中居中。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.