iOS9:在另一个以编程方式添加的 View 中居中以编程方式添加的 View

标签 ios uiview uiimageview ios9

我有一个水平堆栈 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 中。 enter image description here

最佳答案

我相信您可以使用自动布局来做一些事情,但是当您有一个包含需要在其中定位的 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/

相关文章:

ios - iTunes Connect 预发布内部版本号警告符号

iphone - 删除特定对象的自动布局约束

ios - 制作带有图像背景缩放到 iphone 大小的 UI 按钮

iphone - 在 UIImageView 上获取图像

android - 如何将静态代码分析 (SonarCube) 集成到移动项目的 ship.io 中?

ios - 您是否注意到 dispatch_after 在 iOS 设备上运行速度太慢了 ~10%?

ios - 点击 UITextField 时动画 View

arrays - swift 3 和 UIImageview 案例

iphone - 在后台加载图像以优化 ios 中的加载

ios - 加载本地资源时UIWebView和WKWebView有什么区别