额…之前本猫一直使用IB来处理UI布局,虽说比较直观,但是对于比较复杂的界面,这样做还是有一些问题的…
主要是你的限制貌似很好很完美,但是切换到不同Device后,还是会发现不和谐的黄感叹或红感叹号的存在… ;(
这是因为你很难将所有设备的所有情况都考虑到,你在一种设备界面上设置限制,然后想当然觉得这应该会应用到所有设备上…这还只是同类设备会出现的情况.所谓同类是指,你只在所有iPhone上运行.如果你还想在iPad或iTV上运行,那么你会发现这简直是”不可能完成的任务”…
但是如果通过编程来处理限制的话,貌似有很复杂…的确如此,不过…SnapKit前来拯救我们啦 ;)
SnapKit是一个很方便,表达很简单的库,可以通过CocoaPods安装.
举个栗子,如下图所示的界面,我们来尝试做一下限制:
首先大体上我们的思路是将整个界面分为3行,把这3行放在StackView里,首先要在UI里将StackView填充到整个View.
接下来我们分别创建3个UIView,并分别宽度填满每行.
然后我们分别针对每一行来做限制:
func setup1stLineInStackView(){ targetTextFld.snp.makeConstraints {make in