[iOS 问题求助]关于 Masonry 布局的问题 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
lisonfan
V2EX    iOS

[iOS 问题求助]关于 Masonry 布局的问题

  •  
  •   lisonfan 2017-01-16 21:38:11 +08:00 3446 次点击
    这是一个创建于 3193 天前的主题,其中的信息可能已经有所发展或是发生改变。

    我一个自定义的 Cell ,布局如下:

    图片设置大小、距离顶部、距离左边、距离底部

    标题的左边距离图片的右边、距离顶部、距离右边

    来源的左边距离图片的右边、顶部距离标题底部、距离底部、距离右边

    这样设置是没问题,正常的。

    但是现在我想自定义一条分隔线,草图如下:

    我该如何修改?我尝试了很多次都失败了。。

    Xcode 控制台狂飙 log

    PS: 用了 UITableView-FDTemplateLayoutCell 来动态计算高度

    第 1 条附言    2017-01-17 10:37:52 +08:00
    之前对 Masonry 布局有个错误的理解,认为设置好一个约束就会处理一个,实际上是设置好所有控件的约束才会统一来布局。
    第 2 条附言    2017-01-17 10:39:50 +08:00

    问题已解决,本人对约束和 Masonry 还是不熟,还得多练练

    感谢各位的耐心解答。

    附上解决之后的代码:

    24 条回复    2017-01-18 13:04:54 +08:00
    Sunnyyoung
        1
    Sunnyyoung  
       2017-01-16 23:37:24 +08:00 via iPhone
    分割线跟其他 View 没有任何约束的关联,直接固定 left right bottom 和其 height 的约束就好了阿
    Sunnyyoung
        2
    Sunnyyoung  
       2017-01-16 23:37:56 +08:00 via iPhone
    分割线用 Layer 画一个多好
    lisonfan
        3
    lisonfan  
    OP
       2017-01-17 00:10:36 +08:00
    @Sunnyyoung



    这样写 Xcode 还是滚一堆的 log



    ps: label 加上去了。
    Dashit
        4
    Dashit  
       2017-01-17 08:49:05 +08:00
    make.size.height.equalTo(0.5) 应该是这样吧.
    lisonfan
        5
    lisonfan  
    OP
       2017-01-17 09:00:27 +08:00
    @Dashit 还是狂飙 log
    Dashit
        6
    Dashit  
       2017-01-17 09:03:34 +08:00
    /div>
    @lisonfan 看你贴的 log 应该不止 line 一个地方写的有问题.
    lisonfan
        7
    lisonfan  
    OP
       2017-01-17 09:07:04 +08:00
    @Dashit line 不用 mas 加的话约束就没问题
    lisonfan
        8
    lisonfan  
    OP
       2017-01-17 09:08:22 +08:00
    @Dashit



    其他三个控件是这样写的
    Dashit
        9
    Dashit  
       2017-01-17 09:21:18 +08:00
    newsPhoto make.size 这句去掉改成 make.width.equalTo(100).
    titleLabel height 的约束没有设置.
    classCnLabel 少了个 top.
    sjjvenu
        10
    sjjvenu  
       2017-01-17 09:21:23 +08:00
    图片控件的 top 和 bottom 都加了限制,然后又设置了 size ,应该是高度和 top,bottom 冲突了吧
    lisonfan
        11
    lisonfan  
    OP
       2017-01-17 09:48:54 +08:00
    @Dashit

    make.width.equalTo(100) 和 make.size.width.equalTo(100) 都报错报警告

    Implicit conversion of 'int' to 'id' is disallowed with ARC

    Incompatible integer to pointer conversion passing 'int' to parameter of type '__strong id'
    lisonfan
        12
    lisonfan  
    OP
       2017-01-17 09:58:54 +08:00
    @Dashit
    @sjjvenu
    @Sunnyyoung

    谢谢三位的回答,我再研究研究
    Dashit
        13
    Dashit  
       2017-01-17 10:08:15 +08:00
    @lisonfan make.width.mas_equalTo(100)
    感觉你对约束理解有点问题.
    laoyur
        14
    laoyur  
       2017-01-17 10:09:31 +08:00
    @lisonfan 回 3#,为何最后一行是 make.size.height.offset(0.5)?我对 Masonry 用得不多,都忘记了
    但直觉上不应该是 make.size.height.equalTo(@1)吗?
    我现在用 Cartography ,感觉用得也不是很爽,其实我更喜欢直接 storyboard ,直接拖来拖去,啪啪啪很爽快的感觉

    顺便搭车问个问题, storyboard 跟 Cartography 混用约束时(比如 storyboard 排好版后,需要运行时动态加点控件之类),总是报一大堆 log ,请问有没有什么最佳实践可以遵循?
    hhg200454
        15
    hhg200454  
       2017-01-17 10:31:54 +08:00
    line 的约束最后一行改下:
    make.height.mas_equalTo(0.5);
    lisonfan
        16
    lisonfan  
    OP
       2017-01-17 10:33:33 +08:00
    @laoyur
    @Dashit

    再次感谢两位,问题解决,对 Masonry 和约束还是不太熟,还要多练练
    lisonfan
        17
    lisonfan  
    OP
       2017-01-17 10:35:01 +08:00
    @hhg200454

    是的,最开始我以为 make.size.height.offset(0.5) 仅仅设置了高度,没想到还顺带设置了宽度

    现在改成 make.height.mas_offset(0.5) 就好了。

    谢谢
    DingSoung
        18
    DingSoung  
       2017-01-17 10:50:11 +08:00
    每次看到这样一大堆布局代码 真心觉得很傻
    lisonfan
        19
    lisonfan  
    OP
       2017-01-17 10:52:31 +08:00
    @dingsoung

    ![]( )

    laoyur
        20
    laoyur  
       2017-01-17 11:43:12 +08:00
    @lisonfan 你这个,能做成这样也是神人了
    DingSoung
        21
    DingSoung  
       2017-01-17 14:14:24 +08:00
    @lisonfan 一根筋
    2014CD2014
        22
    2014CD2014  
       2017-01-17 17:49:15 +08:00
    先研究透了,再深入使用
    duguyihou
        23
    duguyihou  
       2017-01-18 12:41:45 +08:00
    @lisonfan 电脑不卡么。。
    lisonfan
        24
    lisonfan  
    OP
       2017-01-18 13:04:54 +08:00
    @duguyihou 这是我在网上找的图
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     962 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 36ms UTC 22:22 PVG 06:22 LAX 15:22 JFK 18:22
    Do have faith in what you're doing.
    ubao 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