首页 > iOS布局问题请教

iOS布局问题请教

学习了几天iOS(依然小白)
之前是做Android的
我想问下 是否有像Android那样的可以在布局文件xml中设置高度呢

现在我只知道在xib中设置了 无效
是不是iOS要控制view的高度 必须要在代码中通过CGRectMake来设置吗


xib中可以直接设置高度的,但不够灵活,你可以去了解下AutoLayout


能否贴下xib截图和代码,有些情况是默认开启了autolayout


ios现在用的是autolayout布局,当然你可以关了使用“绝对定位”。autolayout跟现在android的constraintslayout什么的有些许类似。跟relativelayout的话也有些类似的地方,不过没有那么多。使用上把光标停在你的view上,然后ctrl+drag。之后设置具体的参数。


答主也是写了好几年Android才过来iOS的技术渣。一开始感觉iOS各种不爽,然而写了几个月习惯了之后,竟然发现反而我已经没法写好Android了。因为iOS其实写起来比我最初想象的要方便的多,也比Android方便的多。

至于我初学时排斥iOS开发的原因,很大程度上归结于Xcode有点糟糕的体验。Xcode有一个很大的毛病:明明很方便很常用的功能,却放在角落里当图标,连提示都不给。

Interface Builder的AutoLayout约束功能——就是放在可视化编辑区域右下角的四个不起眼的小图标——也是如此。选中一个控件,点第二个按钮,可以设置水平垂直居中约束;点第三个按钮可以设置与上下左右最近控件的距离、固定宽度、固定高度、固定宽高比;最后一个按钮用于按设置好的约束更新视图。这四个按钮功能甚至还更强大:如果按住command多选一些控件,可以设置多个控件对齐等。

一旦控件被设置了约束,它就有了隐式的自适应内容的趋势,除非强制设置了一些约束改变它的大小。

如果多个UILabel之类的自适应内容的控件排列在一起,还要注意一下右侧属性栏“尺寸”标签最下方的Content Hugging Priority和Content Compression Resistance Priority。答主词汇浅薄,暂时描述不清楚这个功能,只能说有点像Android中的layout_weight。

AutoLayout的思想也是从Android转到iOS的开发者要特别注意的,尤其是约束的数量要恰到好处,既不能少到出现歧义,又不能多到发生冲突;每个控件的约束必须足以确定它的水平位置、垂直位置、宽度和高度(UILabel等可以自适应内容,则不需要确定宽度和高度)。

在答主自己的实践过程中,AutoLayout可以实现很多Android Layout不能实现的需求(也可能是因为答主对Android了解不够)。所以说虽然初学者可能感觉AutoLayout不如Android Layout方便,但是当开发者掌握了AutoLayout的各种用法之后,就会觉得这同样是一个方便且更加强大的工具。

【热门文章】
【热门文章】