最近公司的 iOS 工程师吵架差不多要打起来了,一边支持主要 Frame 布局,一边支持主要 AutoLayout (Masonry) 布局。
Frame 支持的观点是: AutoLayout 最终也是通过 frame,而且项目只需要兼容 iPhone,机型不多情况下使用 Frame 编程效率比较高。
AutoLayout 支持的观点是: Frame 布局,一连串数字加起来可读性有点差,维护麻烦。
我是 iOS 新人,请问大大主要使用哪种比较靠谱,避免少踩坑?
最近公司的 iOS 工程师吵架差不多要打起来了,一边支持主要 Frame 布局,一边支持主要 AutoLayout (Masonry) 布局。
Frame 支持的观点是: AutoLayout 最终也是通过 frame,而且项目只需要兼容 iPhone,机型不多情况下使用 Frame 编程效率比较高。
AutoLayout 支持的观点是: Frame 布局,一连串数字加起来可读性有点差,维护麻烦。
我是 iOS 新人,请问大大主要使用哪种比较靠谱,避免少踩坑?
|
kera0aJun 21, 2019 via iPhone
1
最终都是 Frame,那为啥不用 Masonry 呀?
开发效率,易用性,功能,可读性都完爆 Frame 了吧。 Frame 在特定场景下有用,通常情况还是用 Masonry 吧 第一个人适合用机器码写 iOS 程序,反正最后 objc 都是机器码😄 |
|
nigulasidaJun 21, 2019
2
AutoLayout
|
|
CommandZiJun 21, 2019
4
当然是 AutoLayout,后面还会转向 SwiftUI,Frame 真的 out 了
|
|
HeavytigerJun 21, 2019
5
都用
|
|
ai277014717Jun 21, 2019
6
跟团队的大方向走。autolayout 也可以写的很烂。frame 一般来说都要根据屏幕宽度动态计算。autolayout 却不用。autolayout 滥用会导致性能问题。详细可以看看 wwdc 高性能 autolayout
|
|
zenghaojim33Jun 21, 2019
7
这确定不是 2014 年的帖子吗...
|
|
MrStarkJun 21, 2019
8
现在居然还有 iOS 新人,也是不容易了。话说,现在入手 iOS 不应该是从 Swift 入手的么,ObjC 已经是二等公民了。
|
|
loveuqianJun 21, 2019 via iPhone
10
能做到任意列表点击状态栏滚到顶部保持 fps55 以上,都不算影响效率
|
|
ParyaceJun 21, 2019
11
仿佛回到了五年前....现在还有讨论这个的?
现在的设备 99%的情况下抠不出来这点性能区别。开发效率优先,真的要优化也是出现性能瓶颈时优化。 |
|
faiminJun 21, 2019 via iPhone
12
一起用呗,干嘛定那么死。简单页面 autolayout,复杂的用 frame. 做复杂动画的用 frame
|
|
SeanChenseJun 21, 2019
14
frame
> AutoLayout 支持的观点是:Frame 布局,一连串数字加起来可读性有点差,维护麻烦。 这个观点太逞强了 |
|
SeanChenseJun 21, 2019
15
逞强 --> 勉强
|
|
hstdtJun 21, 2019 via iPhone
16
苹果一直在优化 autolayout 的性能,这里一般不会成为瓶颈的,用吧没事。或者用 stackview 取代一部分 autolayout
|
|
xjbetaJun 21, 2019
17
把他们都打一顿 然后上 SwiftUI (狗头
|
|
18
我建议你们公司 iOS 换一批人,9012 了,还不接受 autolayout、swift
|
|
shawndevJun 21, 2019
19
建议使用机器码编程,运行效率高,而且反正 swift、objc 最终都会转换成机器码。
|
|
zenghaojim33Jun 21, 2019
20
@353943780 Swift 生态一般?能用的库已经一大堆了
|
|
OthoJun 21, 2019
21
爱咋写咋写,互相先总结下好处不行么?
|
|
eric1202Jun 21, 2019
22
我支持 autolayout
|
|
MarginKJun 21, 2019
23
不好意思,我只用 frame
布局约束本身可读性就不高,只要是写代码,你就是用 MAS 也没 Frame 让我看着舒服 楼上拿 SWIFTUI 来抵制 frame 的,真的是 50 步笑百步 |
|
wezzardJun 21, 2019 via iPhone
26
|
|
daochengJun 21, 2019
27
Masonry or Snapkit,只有在性能需要时使用 Frame
我觉得 Autolayout 可读性和开发效率更高 |
|
wangyifei6817Jun 21, 2019
28
说用 frame 的 可能是没接触过其他平台的布局方案
说实话 我连 autolayout 都不满意 同样的方案 用 frame 实现要比 autolayout 慢的多 代码量也更多 iOS10 以后 autolayout 列表性能比之前强太多了 非列表页面 frame 更没有优势 |
|
zenghaojim33Jun 21, 2019
29
非要说 AL 不好,用 Frame,还不如上 Flexlayout ( yoga )
Frame 从效率层面屁都不是,动态 layout 更是被吊打,你只是随便弄个 View 放在上面当我没说 |
|
damngoodJun 21, 2019 via iPhone
30
当真还有用 frame 的呀 真 iphone 4 时代的即视感
|
|
damngoodJun 21, 2019 via iPhone
31
autolayout 的性能没问题 除非你 某个 view 的 sub view 太多,比如有几百个这种情况在之前的实现上可能有性能问题.
frame 根本就不应该是争论点 该争论的是 用 uikit 还是 swift ui 😚 |
|
ostholzJun 21, 2019
32
我用过最好用的是 TangramKit
|
|
deyuJun 21, 2019
33
主用 frame 页面控制比较灵活 我是不会相信苹果的 autolayout 的
|
|
q409195961Jun 21, 2019
34
AutoLayout 啊,这年代了,用 Frame 看代码脑瓜疼啊。
Masonry(Snapkit)多好用呀。 |
|
kkkkkruaJun 21, 2019
35
我用 flutter
|
|
superpeaserJun 21, 2019
36
SwiftUI 才是未来
|
|
HarryQuJun 21, 2019
37
我写 iOS 代码的时候,一直使用 Masonry 来写布局, 比较灵活。
大部分页面比较简单,直接使用 Masonry 灵活、快速。 缺点就是 : 1. 写复杂界面的时候,代码一坨一坨的。我选择将 Masonry 封装到具体的 View 来简化 ViewController 页面代码。 2. 列表页,尤其是非常复杂、由服务器动态控制布局的列表页,滑动起来比较卡顿。我选择使用 YYLabel 库,在很复杂的页面不使用 Masonry。 因为我是 Android 过去写 iOS 的 , 写布局用 Masonry 很舒服。 最主要的是 iOS 只有我一个人会写,我想用啥就用啥,舒服的一批(当然最终的效果是符合产品经理和用户的预期的)。 |
|
matouJun 21, 2019
38
这年代还用 frame 的确实有点不思进取了
|
|
StubbornCJun 21, 2019
39
请让坚持 Frame 的童鞋联系我,我想和他好好探讨下人生
|
|
unrulyJun 21, 2019
42
页面布局部分 iOS 一直是很落后的 frame -> AutoLayout 是过度 还在使用 frame 布局的只能说你喜欢你继续
|
|
kx5d62Jn1J9MjoXPJun 21, 2019
44
请使用 ConstraintLayout
|
|
holydancerJun 21, 2019 via Android
45
看来我真的老了,我不是很喜欢用 masonry,不是因为性能,就是习惯问题…估计楼主公司的人争论也就是个习惯问题,然后找个理由给自己的习惯背书…
|
|
expkzbJun 21, 2019
46
可能不嫌累吧。像楼上所说,现在应该讨论 UIKit 和 SwiftUI 的问题,虽然 UIKIt 的玩意实现几个协议就能用了😂
|
|
0xcbJun 21, 2019 via Android
47
纯代码:Frame->Masonry,Xib:Autoresize->Autolayout, 从纯代码计算,到所见即所得; 原因是设备配置高了,开发效率也要提高。
|
|
acumenJun 21, 2019
48
拥抱变化(狗头
|
|
49
挺有意思的,一个东西加点壳加点糖都能引起对立。。
|
|
IxiziJun 22, 2019
51
用 Flex Box 爽 一直用一直爽
|
|
converJun 22, 2019 via iPhone
52
什么年代了还争这个,SwiftUI,FlexLayou,Texture 了解一下
|
|
DeeerJun 22, 2019
53
都什么年代了
|
|
rollpardJun 22, 2019
54
iOS9 的 layoutAnchor 用起来还是可以的,不大喜欢用 masonry。
其实 frame 做屏幕适配也很方便啊,所有布局写在 LayoutSubview 里面就行了,能获得 view 的真实宽高,layoutGuide,自由度很高 |
|
YantasfJun 24, 2019
55
单纯的就问题来说,frame 有些时候还是需要的,只不过大多数时候是 AutoLayout
|
|
MarginKJun 24, 2019
56
@CSwater
1.不同屏幕?和 frame 关系不大 2.横屏?你是说屏幕方向改变刷新布局吧,size 部分按比例计算,XY 甚至都可以按比例写好,监听到页面变换,layoutsubviews 方法跑一次很简单不是吗? 3.刘海屏?很抱歉我没懂你是在问什么,SafeAreaInsets 和 frame 的使用在哪里存在冲突吗?老实说我对 X 以上机型的适配没花太多功夫,反而是最近的 dark mode 目前让我发现我要改的代码更多 |
|
ruixingchenJun 24, 2019
57
pod 'Texture' 的我: frame? 蛤?
|