繁体   English   中英

iOS9:将以编程方式添加的视图居中于另一个以编程方式添加的视图内

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM