iOS 布局用 Frame 用 AutoLayout (Masonry)?

2019-06-21 11:31:58 +08:00
 353943780

最近公司的 iOS 工程师吵架差不多要打起来了,一边支持主要 Frame 布局,一边支持主要 AutoLayout (Masonry) 布局。

Frame 支持的观点是: AutoLayout 最终也是通过 frame,而且项目只需要兼容 iPhone,机型不多情况下使用 Frame 编程效率比较高。

AutoLayout 支持的观点是: Frame 布局,一连串数字加起来可读性有点差,维护麻烦。

我是 iOS 新人,请问大大主要使用哪种比较靠谱,避免少踩坑?

5833 次点击
所在节点    iOS
57 条回复
Otho
2019-06-21 13:30:53 +08:00
爱咋写咋写,互相先总结下好处不行么?
eric1202
2019-06-21 13:42:23 +08:00
我支持 autolayout
MarginK
2019-06-21 13:42:48 +08:00
不好意思,我只用 frame

布局约束本身可读性就不高,只要是写代码,你就是用 MAS 也没 Frame 让我看着舒服

楼上拿 SWIFTUI 来抵制 frame 的,真的是 50 步笑百步
MarginK
2019-06-21 13:44:00 +08:00
@yeziahehe 不好意思,现在是 2019 年,

我完全接受 SWIFTUI,但绝不接受目前版本苹果提供的自动布局
CommandZi
2019-06-21 14:22:29 +08:00
@353943780 一些比较新的库已经 Swift Only 了,包括苹果推出的比如 Combine、RealityKit、SwiftUI。
wezzard
2019-06-21 14:35:20 +08:00
可以試試我寫的 AutoLayout 助手庫 CTVFL,我覺得比現有的都好用哈。不過是 Swift 的 🌚

https://github.com/WeZZard/CTVFL
daocheng
2019-06-21 14:42:34 +08:00
Masonry or Snapkit,只有在性能需要时使用 Frame
我觉得 Autolayout 可读性和开发效率更高
wangyifei6817
2019-06-21 14:45:34 +08:00
说用 frame 的 可能是没接触过其他平台的布局方案
说实话 我连 autolayout 都不满意

同样的方案 用 frame 实现要比 autolayout 慢的多 代码量也更多
iOS10 以后 autolayout 列表性能比之前强太多了
非列表页面 frame 更没有优势
zenghaojim33
2019-06-21 14:56:45 +08:00
非要说 AL 不好,用 Frame,还不如上 Flexlayout ( yoga )
Frame 从效率层面屁都不是,动态 layout 更是被吊打,你只是随便弄个 View 放在上面当我没说
damngood
2019-06-21 15:03:14 +08:00
当真还有用 frame 的呀 真 iphone 4 时代的即视感
damngood
2019-06-21 15:08:22 +08:00
autolayout 的性能没问题 除非你 某个 view 的 sub view 太多,比如有几百个这种情况在之前的实现上可能有性能问题.

frame 根本就不应该是争论点
该争论的是 用 uikit 还是 swift ui 😚
ostholz
2019-06-21 15:11:55 +08:00
我用过最好用的是 TangramKit
deyu
2019-06-21 15:13:39 +08:00
主用 frame 页面控制比较灵活 我是不会相信苹果的 autolayout 的
q409195961
2019-06-21 15:16:58 +08:00
AutoLayout 啊,这年代了,用 Frame 看代码脑瓜疼啊。

Masonry(Snapkit)多好用呀。
kkkkkrua
2019-06-21 15:43:07 +08:00
我用 flutter
superpeaser
2019-06-21 15:46:11 +08:00
SwiftUI 才是未来
HarryQu
2019-06-21 16:06:12 +08:00
我写 iOS 代码的时候,一直使用 Masonry 来写布局, 比较灵活。
大部分页面比较简单,直接使用 Masonry 灵活、快速。

缺点就是 :
1. 写复杂界面的时候,代码一坨一坨的。我选择将 Masonry 封装到具体的 View 来简化 ViewController 页面代码。
2. 列表页,尤其是非常复杂、由服务器动态控制布局的列表页,滑动起来比较卡顿。我选择使用 YYLabel 库,在很复杂的页面不使用 Masonry。

因为我是 Android 过去写 iOS 的 , 写布局用 Masonry 很舒服。
最主要的是 iOS 只有我一个人会写,我想用啥就用啥,舒服的一批(当然最终的效果是符合产品经理和用户的预期的)。
matou
2019-06-21 16:12:02 +08:00
这年代还用 frame 的确实有点不思进取了
StubbornC
2019-06-21 16:21:26 +08:00
请让坚持 Frame 的童鞋联系我,我想和他好好探讨下人生
MarginK
2019-06-21 17:10:20 +08:00
@StubbornC 来吧,我

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/576133

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX