swift - 我很笨,我的子视图不会服从并正确调整自己的大小

Posted

技术标签:

【中文标题】swift - 我很笨,我的子视图不会服从并正确调整自己的大小【英文标题】:swift - I'm dumb and my subview wont obey and correctly size itself 【发布时间】:2015-06-27 23:46:00 【问题描述】:

我觉得这对你们这些退伍军人来说是一个垒球,但我在调整 UIImageView 的子视图大小时遇到​​了很多麻烦......这就是我得到的:

var myImageView:UIImageView!

var tmpView:UIImageView!

myImageView 是我的“主要”UIImageView,我将 tmpView 视为子视图......现在我已经尝试过启用和不启用自动布局,但我已经设置了 myImageView s.t. 的约束。 myImageView 占据整个屏幕。我通过设置 myImageView.image = UIImage...等确认了这一点。

这是我初始化图像并将其添加到子视图的代码:

self.tmpView.image = UIImage(named: "myImage.png")
self.tmpView.frame = CGRect(x: 0, y: 0, width: 200, height: 300)
self.imageView2.addSubview(self.tmpView)

现在这是我遇到问题的地方 - 无论我将 tmpView 的高度和宽度设置为什么,大小都不会改变。有趣的是,改变 x,y 确实会影响子视图的位置。

这是我的问题:1)为什么 x 和 y 都很好地服从,但宽度和高度却没有?

2) 我该如何解决这个问题,最好是通过编程方式还是通过情节提要来解决?

【问题讨论】:

【参考方案1】:

您不应再在使用自动布局时直接修改框架。为tmpView 添加宽度和高度约束,如果您使用 IB,则为它们创建出口(出口应具有 NSLayoutContraint 类型)。

您也可以在代码中创建约束,但除非必须这样做,否则这样做没有意义。

在这两种情况下,要调整 tmpView 的大小,请将每个约束的 constant 属性更改为您想要的值。

widthConstraint.constant = yourNewWidth;
heightConstraint.constant = yourNewHeight;

【讨论】:

@säculnój:这是正确的方法;如果它不起作用,那么您可能需要更改约束的优先级。我建议您使用视图调试器在运行时检查约束。

以上是关于swift - 我很笨,我的子视图不会服从并正确调整自己的大小的主要内容,如果未能解决你的问题,请参考以下文章

添加删除的子视图 Swift 3 iOS

斯威夫特 3 |以编程方式添加约束不会使我的子视图居中

如何在 UIView swift 中重新加载特定的子视图?

Swift 中的文档选择器视图控制器问题

无法显示添加到 WKWebView 的子视图

Swift 3:不能以编程方式在 Collectionview 标题上正确创建标签?