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 - 我很笨,我的子视图不会服从并正确调整自己的大小的主要内容,如果未能解决你的问题,请参考以下文章