为了账号安全,请及时绑定邮箱和手机立即绑定

iOS布局问题请教

iOS布局问题请教

iOS
胡说叔叔 2018-07-27 12:19:16
学习了几天iOS(依然小白)之前是做Android的我想问下 是否有像Android那样的可以在布局文件xml中设置高度呢现在我只知道在xib中设置了 无效 是不是iOS要控制view的高度 必须要在代码中通过CGRectMake来设置吗
查看完整描述

3 回答

?
翻阅古今

TA贡献1780条经验 获得超5个赞

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

查看完整回答
反对 回复 2018-07-31
?
慕婉清6462132

TA贡献1804条经验 获得超2个赞

答主也是写了好几年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的各种用法之后,就会觉得这同样是一个方便且更加强大的工具。


查看完整回答
反对 回复 2018-07-31
  • 3 回答
  • 0 关注
  • 675 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信