对于 ios 老手来说,漂亮的界面是用 storyboard 做吗?还是直接 coding? - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
iOS 开发实用技术导航
NSHipster 中文版
http://nshipster.cn/
cocos2d 开源 2D 游戏引擎
http://www.cocos2d-iphone.org/
CocoaPods
http://cocoapods.org/
Google Analytics for Mobile 统计解决方案
http://code.google.com/mobile/analytics/
WWDC
https://developer.apple.com/wwdc/
Design Guides and Resources
https://developer.apple.com/design/
Transcripts of WWDC sessions
http://asciiwwdc.com
Cocoa with Love
http://cocoawithlove.com/
Cocoa Dev Central
http://cocoadevcentral.com/
NSHipster
http://nshipster.com/
Style Guides
Google Objective-C Style Guide
NYTimes Objective-C Style Guide
Useful Tools and Services
Charles Web Debugging Proxy
Smore
oukichi
V2EX    iDev

对于 ios 老手来说,漂亮的界面是用 storyboard 做吗?还是直接 coding?

  •  
  •   oukichi 2021-05-29 13:19:26 +08:00 10146 次点击
    这是一个创建于 1647 天前的主题,其中的信息可能已经有所发展或是发生改变。

    我在学 ios,油管上看了一些视频,有人用 storyboard,有人直接 coding 。 想问问老手,你们的漂亮界面是如何实现出来的? 感谢回复。

    第 1 条附言    2021-05-30 18:08:10 +08:00

    漂亮的界面重点是界面,而不是漂亮,各位的热情我接收到了,但请不要跑偏了哈哈。

    49 条回复    2021-07-07 11:36:30 +08:00
    JoJoJoJ
        1
    JoJoJoJ  
       2021-05-29 13:24:56 +08:00 via iPhone   5
    漂不漂亮和 sb 还是 coding 有啥关系?
    hheng101
        2
    hheng101  
       2021-05-29 13:50:31 +08:00
    都能做,大部分公司还是 coding 偏多
    xarthur
        3
    xarthur  
       2021-05-29 13:51:19 +08:00 via iPhone   1
    是设计出来的……
    还有不懂什么叫做直接 Coding,你是想说 Swift UI 吗?
    oukichi
        4
    oukichi  
    OP
       2021-05-29 13:56:53 +08:00
    @hheng101 感谢!
    oukichi
        5
    oukichi  
    OP
       2021-05-29 13:57:21 +08:00
    @JoJoJoJ 请仔细审题
    oukichi
        6
    oukichi  
    OP
       2021-05-29 13:58:02 +08:00
    @xarthur 直接 coding 的意思是直接在 controller 里面调用相关的类并直接设置属性来实现界面。
    typetraits
        7
    typetraits  
       2021-05-29 14:16:45 +08:00
    个人感觉 coding 比较好,storyboard 还得拖拽,太麻烦了;而 coding 我这一行写下去,UI 什么样我心里已经大概有数了
    oukichi
        8
    oukichi  
    OP
       2021-05-29 14:46:14 +08:00
    @typetraits 就像我们写 CSS 。我理解了。感谢大哥!
    360511404
        9
    360511404  
       2021-05-29 15:03:03 +08:00   1
    老手是融会贯通的,不会告诉你 storyboard 还是 coding
    两者各有优劣
    storyboard 本质也是 xml 文件,而且编译出来载入内存更快,苹果也用,还是提倡的方式
    用 coding 为了多人开发避免冲突
    你可以习惯一种,但两种方式都要会用
    linhongye
        10
    linhongye  
       2021-05-29 15:03:08 +08:00 via Android   2
    storyboard 已经没有后续支持了吧。 现在是 swiftui 了。教程看旧了?
    ZeoKarl     11
    ZeoKarl  
       2021-05-29 15:09:06 +08:00   1
    storyboard 自己玩挺爽的.多人协作,就很酸爽.
    nicevar
        12
    nicevar  
       2021-05-29 15:31:52 +08:00   1
    storyboard 的本意是让 UI 设计师来做这一块,但是绝大多数情况都是让程序员来完成,所以它用起来真的不怎么样,很多公司都是 storyboard 还没出现的时候就在做 iOS 项目,对程序员来说跟 nib 没太大区别,如果连 nib 都不用 storyboard 也不会用了。
    Lin0936
        13
    Lin0936  
       2021-05-29 15:39:02 +08:00 via iPhone   1
    刚开始是 coding,然后用 storyboard,现在又回到了 coding 不过是用 snapkit
    iOCZ
        14
    iOCZ  
       2021-05-29 16:24:23 +08:00
    这个不是重点
    irytu
        15
    irytu  
       2021-05-29 16:32:58 +08:00 via iPhone
    关键看 design 水平 跟代码没啥关系
    oukichi
        16
    oukichi  
    OP
       2021-05-29 16:47:43 +08:00
    @linhongye 因为我一直不喜欢声明式开发,所以我从 swift ui 回退到了你说的“旧的”那种开发。MVC 那种。其实我写前端也不喜欢 react,更喜欢 angular 。于是……就是你说的,教程看旧了。
    oukichi
        17
    oukichi  
    OP
       2021-05-29 16:49:05 +08:00
    @Lin0936 你可太优秀了,幸好你回复了,让我知道了 snapKit 这个好东西,还有啥常用的吗?求推荐!
    Leonard
        18
    Leonard  
       2021-05-29 17:32:26 +08:00
    好不好看是看设计,不过我个人不喜欢用 storyboard,coding 感觉更自在一些。oc 用 masonry,swift 用 snapkit 。swiftUI 还没怎么用。
    usVexMownCzar
        19
    usVexMownCzar  
       2021-05-29 18:01:29 +08:00   1
    @oukichi 推荐一个 pinlayout,据说比 autolayout 性能高
    ooops
        20
    ooops  
       2021-05-29 18:25:07 +08:00 via iPhone
    界面漂不漂亮看 UI 设计,sb 和代码都能实现,没啥本质区别。你是想问大家都用哪种来实现?
    ciki
        21
    ciki  
       2021-05-29 20:46:47 +08:00
    swiftui 可以做出非常炫酷的 UI
    C603H6r18Q1mSP9N
        22
    C603H6r18Q1mSP9N  
       2021-05-29 21:56:30 +08:00   1
    如果不知道就选择直接 coding 吧
    4074
        23
    4074  
       2021-05-29 22:07:14 +08:00   1
    开始学的时候,也是跟着官方教程用 storyboard,拖来拖去很麻烦,还要在代码里进行关联。
    后面全换成 coding 了,不追求极致性能的话,coding 方便很多。
    Lin0936
        24
    Lin0936  
       2021-05-29 23:11:36 +08:00   1
    @oukichi 主要还是看 UI/UX 设计吧,硬要说画 UI 常用的话还有个 RxSwift 吧,还有偶尔用 lottie 显示些动画。
    no1xsyzy
        25
    no1xsyzy &nbs;
       2021-05-30 02:34:47 +08:00
    @JoJoJoJ 我怀疑这里的「漂亮的界面」跟见人就喊「美女」「帅哥」差不多
    catfan
        26
    catfan  
       2021-05-30 06:28:02 +08:00
    Storyboard 的重要特性是能比较直观且无需编译的情况下看到界面在不同设备、不同布局、不同语言、不同转向、不同界面模式(默认 /黑暗)下的大致样式,方便进行适配和预览。

    如果单纯手写界面,这部分的适配代码是非常复杂并且很难全部兼顾的,并且每次调整都需要编译后才能看到效果,开发效率可想而知。

    而且 Storyboard 可以帮助理清整个应用各个界面之间的逻辑,一些界面之间的跳转只需设定好就能无需编写代码就能很好地运作。

    简单来来说,Storyboard 可以大幅减少项目中那些界面设定、适配、跳转等的代码,从而让开发者更专注于应用逻辑的处理。

    当然,无论哪种方式,对于复杂的界面以及动画效果,还是需要手动编写的。
    WildCat
        27
    WildCat  
       2021-05-30 07:26:10 +08:00
    wupher
        28
    wupher  
       2021-05-30 08:35:42 +08:00
    大部分公司开发,都使用 coding 。storyboard 多个开发时那个配置文件有修改冲突问题。

    Apple App 大多使用 storyborad

    个人开发者看习惯了,用 storyboard 的也不少,因为出活快,也没有协同开发的问题。
    lujie2012
        29
    lujie2012  
       2021-05-30 09:09:22 +08:00
    ? 老手回答,漂亮的界面是 UI 小姐姐做出来的,不是开发同学做出来的。
    所以 coding 还是 storyboard 和 APP 的漂亮界面,动画效果没有任何关系,两者底层是用的一样的东西。两者都可以做出一摸摸一样的东西。
    差别在哪里?差别很大。
    新手怎么弄,新手 storyboard 先玩好吧,简单一点,之后你想办法吧 storybaord 的那个项目变成存代码的项目就是了。

    拿来吃饭,什么都要懂的。拿来自己玩,storyboard 你能玩好了,什么 APP 你也都能自己做。
    imkerberos
        30
    imkerberos  
       2021-05-30 09:12:29 +08:00
    masonry + snapkit < pinlayout + flexlayout
    Elethom
        31
    Elethom  
       2021-05-30 09:27:55 +08:00 via iPhone
    好不好看和用什么没关系,不过用 SB 的多半是不打算维护了。
    gggxxxx
        32
    gggxxxx  
       2021-05-30 10:45:26 +08:00
    那么多贬低 storyboard 的。。。。真是搞笑。
    几十年前计算机技术就在提所见即所得......那么多人捧纯 coding 图个啥?
    mxalbert1996
        33
    mxalbert1996  
       2021-05-30 11:11:44 +08:00 via Android   1
    @gggxxxx 因为 StoryBoard 的多人协作和版本控制做的实在是太烂了,你看有人问 Android UI 开发用 xml 还是纯代码么?
    iOCZ
        34
    iOCZ  
       2021-05-30 11:22:03 +08:00
    sb 的问题是不适合代码敲,xml 可以。sb 的源码很复杂。
    Cbdy
        35
    Cbdy  
       2021-05-30 11:28:49 +08:00
    漂不漂亮不是看设计师吗?
    Esioner
        36
    Esioner  
       2021-05-30 12:14:35 +08:00
    原来 Android,最近在看 iOS 的感觉还是 coding 写起来舒服点,storyboard 用起来卡卡的,而且写起来说不出来的不习惯,哈哈哈
    Eagleyes
        37
    Eagleyes  
       2021-05-30 12:49:58 +08:00
    @wupher Apple App 就没有冲突问题么?

    难道说 Apple App 都是一个人开发的?
    cornetCat
        38
    cornetCat  
       2021-05-30 15:22:53 +08:00
    sb 还是小项目用着舒服,大点的项目感觉不如纯 code 。复用也不够方便
    oukichi
        39
    oukichi  
    OP
       2021-05-30 18:06:09 +08:00
    @chiaf 我昨天看了 pinlayout 的文档,针不戳!
    Building
        40
    Building  
       2021-05-30 23:05:47 +08:00 via iPhone
    @gggxxxx 用 code 基本上写的时候脑子里就知道最终的大概效果了,就好像熟练的前端看到设计图脑子里自动就能翻译成 html 结构和 css 样式,所见即所得根本多此一举,就是给在行人看的,Storyboard 优势是场景,纯 UI 声明是 nib 文件,就是类 xml 一样的东西,如果只是简单的几个页面跳转用 Storyboard 就显得非常直观,Storyboard 这东西实际上和 UI 就没多大瓜葛。
    wupher
        41
    wupher  
       2021-05-31 09:02:06 +08:00
    @Eagleyes 这个我真不故道。不过,以前有人通过反向工程分析了 N 多个 App 的实现方式,就是为了解答你这个问题。你可以上网搜索一番。Apple App 其实两者都有,但 stroryboard 居多,有的还接近 100+ view 。

    Coding 也是有很多好处的,尤其是复用和拷贝代码。

    布局哪个更方便就是见仁见智了。
    Eagleyes
        42
    Eagleyes  
       2021-05-31 09:22:50 +08:00
    @wupher 那为什么 Apple 多人开发就用 stroryboard 就不会出现混乱的问题?

    是 Apple 有什么私有的解决办法还是大家开发的姿势不对?
    wupher
        43
    wupher  
       2021-05-31 10:19:27 +08:00
    @Eagleyes 这个我也不知道,你可以在 WWDC 上询问一下。

    我觉得其实更多的是开发习惯问题。coding 可能没有可视化那么方便,尤其在调参时的直观和方便。但是维护,分享,复用肯定强于 xib / storyboard 。
    Eagleyes
        44
    Eagleyes  
       2021-05-31 10:50:47 +08:00
    @wupher 我是觉得一个方法,尤其是吹的特别好的方法,语言,比如 Swift,Storyboard,如果官方自己都不用,(假如说 apple 仍然用 oc 来开发)那么可以断定这个新的东西就是个噱头,自己都不看好。

    反之,如果官方自己用的乐此不疲,那么大概率有前途
    phytry
        45
    phytry  
       2021-06-01 08:52:37 +08:00
    漂不漂亮是设计做的,开发只是实现而已。sb 相比 coding 更直观,而且做复杂页面的时候没那么难受,coding 主要是可控和复用性高。
    wiwby
        46
    wiwby  
       2021-06-01 16:17:33 +08:00
    这都 21 年了,还以为是 11 年吗,玩不转就是菜,还大把人觉得性能和协作不行,代码烂,设计能力差,用啥方式维护成本和复用性都挫

    这玩意儿能满足 98%的需求,节约 50%的时间,唯一的缺点就是学习成本大点,经验性要求高点
    CodingIran
        47
    CodingIran  
       2021-06-04 10:12:32 +08:00
    @wiwby IB

    “玩不转就是菜”大部分情况不是用 IB 不是因为“不会”,而是“不愿意”,做好 code snippet 和封装,纯代码效率不会比 IB 差很多。但纯代码配合 frame 布局的性能却比 IB 高很多(尤其在 iOS12 以下的设备);另外纯代码对于控件封装和复用也比 IB 更有优势。你可以选择自己喜欢的 coding 方式,但不要轻易下“就是菜”的结论。

    “学习成本大?难道不是纯代码的学习成本才大吗:使用 IB 通常可以忽略视图的生命周期,我认识很多 3.4 年经验的 iOS,连 sizeToFit, sizeThatFits:, layoutSubviews, intrinsicContentSize, didMoveToWindow, didMoveToSuperview.. 这些基本的方法都不懂正确的使用。
    一看到设计稿不思考着如何“优化性能”、“如何封装以方便复用”,而是直接打开 storyborad 或 xib 开始拖控件的话很难提高的。
    wiwby
        48
    wiwby  
       2021-06-07 10:41:25 +08:00
    @CodingIran 你说这些和 IB 没啥关系,你要追求极限的布局性能,那就原始 frame,连框架都不要用,菜的人用啥都一样烂,支持 IB 的都能封装,纯代码封装好骗骗小白阔以,你认识的三四年经验的可能是三四年 UI 工程师,不是合格的编码人员,任何科技手段只是工具,最重要的是人,设计这玩意儿是建筑上沿用出来的,有能力的人都是从设计着手,能力不行用啥都是一坨翔。
    jackiecao
        49
    jackiecao  
       2021-07-07 11:36:30 +08:00
    @oukichi 你的标题就是这个意思啊
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     893 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 28ms UTC 21:17 PVG 05:17 LAX 13:17 JFK 16:17
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86