V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
lisonfan
V2EX  ›  iOS

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

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

    我一个自定义的 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
    @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   ·   实用小工具   ·   5658 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 22ms · UTC 03:12 · PVG 11:12 · LAX 19:12 · JFK 22:12
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.