我在其中一个UI控件上实现了约束IBOutlet
,并且我在运行时更改了这些约束的constant
属性的值,以便我可以设置该控件的动画。根据需要改变框架。
但是我遇到这个问题:当我更改常量时,它在iPhone 5s上完美运行,但是当我使用iPhone 6运行相同的代码时,常常需要更大的数值。我将如何使它成为通用的常量将采用动态大小?
以下是我的实施:
func scrollViewDidScroll(scrollView: UIScrollView) {
let scrollViewHeight = Float(scrollView.frame.size.height)
let scrollContentSizeHeight = Float(scrollView.contentSize.height)
let scrollOffset = Float(scrollView.contentOffset.y)
if (scrollOffset == 0) {
self.mapUpConstraints.constant = 30
UIView.animateWithDuration(0.8) {
self.view.layoutSubviews()
}
}
else if (scrollOffset + scrollViewHeight <= scrollContentSizeHeight) {
self.mapUpConstraints.constant = -160
UIView.animateWithDuration(1.0) {
self.view.layoutSubviews()
}
}
}
答案 0 :(得分:2)
一种方法是根据屏幕尺寸设置常数。
假设您知道iPhone 5屏幕的常数为30,您可以计算iPhone 6所需的常量
self.view.bounds.height / (568 / 30)
其中self.view
是UIViewController
的视图。
另一种方法是更改约束multiplier
属性。使用这种方法,您需要找出所有屏幕尺寸上UI组件之间的通用关系。
您需要选择更适合您和UI的内容。