如何设置自动布局约束常量通用或设备特定?
Posted
技术标签:
【中文标题】如何设置自动布局约束常量通用或设备特定?【英文标题】:How to set Autolayout constraints constant generic or device specific? 【发布时间】:2016-12-20 11:25:04 【问题描述】:我在其中一个 UI 控件上实现了约束 IBOutlet
s,并在运行时更改了这些约束的 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()
【问题讨论】:
【参考方案1】:一种方法是根据屏幕大小设置常量。
假设您知道对于 iPhone 5 屏幕,您的常数是 30,您可以计算 iPhone 6 所需的常数为
self.view.bounds.height / (568 / 30)
其中self.view
是您的UIViewController
的视图。
另一种方法是更改约束multiplier
属性。使用这种方法,您需要找出所有屏幕尺寸上的 UI 组件之间的共同关系。
您需要选择更适合您和您的 UI 的内容。
【讨论】:
以上是关于如何设置自动布局约束常量通用或设备特定?的主要内容,如果未能解决你的问题,请参考以下文章
Android 屏幕适配屏幕适配通用解决方案 ⑥ ( 约束布局 ConstraintLayout 百分比布局方案 | 将设计稿尺寸自动转为约束布局百分比标签属性 | 将输出结果设置到组件标签中 )
Android 屏幕适配屏幕适配通用解决方案 ⑥ ( 约束布局 ConstraintLayout 百分比布局方案 | 将设计稿尺寸自动转为约束布局百分比标签属性 | 将输出结果设置到组件标签中 )