如果这个问题已经解决,我很抱歉,但我找不到。
我认为在我的程序中的某些点将UIImageView从屏幕外设置到屏幕上会很简单。所以我创建了UIImageView并将其编码,但是我得到了很多奇怪的行为。我已经缩小了这个事实,即每次用户交互时都会调用layoutSubviews(按下每个按钮),它会重置所有项目的大小和位置。我为每个屏幕项目使用自动布局保存这个,所以这对我想要自动布局的东西很好。但是这一项不断被移回到它的起始位置。我这样证明了这一点:
override func viewDidLoad() {
super.viewDidLoad()
print("viewDidLoad")
let screenWidth = UIScreen.mainScreen().bounds.width
let screenHeight = UIScreen.mainScreen().bounds.height
print(image.center)
image.center = CGPointMake(screenWidth / 2, image.bounds.height / -2)
print(image.center)
}
override func viewWillLayoutSubviews() {
print("viewWillLayoutSubviews")
print(image.center)
}
override func viewDidLayoutSubviews() {
print("viewDidLayoutSubviews")
print(image.center)
}
这是我得到的结果:
viewDidLoad
(294.0, 228.0)
(160.0, -64.0)
viewWillLayoutSubviews
(160.0, -64.0)
viewDidLayoutSubviews
(294.0, 228.0)
我没有任何附加于此视图的约束。思考?我想我可以存储位置并不断地手动移动它,但我确定某个地方有一个开关可以关闭特定项目的自动布局。我找不到它。
感谢您的帮助......
答案 0 :(得分:0)
图片必须autoresizingMasks
才能转化为约束。
通过执行以下操作禁用它:
image.translatesAutoresizingMaskIntoConstraints = false