zoukankan      html  css  js  c++  java
  • 在autolayout中加入每个view的weight

    在autolayout中加入每个view的weight,这样相互之间的关系就更明确,比如:

      double iconViewWeight = 1;
        double titleLabelWeight = 12;
        double timeLabelWeight = 3;
        
        double standardWeigth = iconViewWeight;
        double iconViewWeightRatio = iconViewWeight / standardWeigth;
        double titileLabelWightRatio = titleLabelWeight / standardWeigth;
        double timeLabelWightRatio = timeLabelWeight / standardWeigth;
        
        UIView *standardView = _iconView;
        
        NSDictionary *views = NSDictionaryOfVariableBindings(_iconView, _titileLabel, _timeLabel, bgImageView);
        NSLayoutConstraint *constraint = [NSLayoutConstraint constraintWithItem:_iconView
                                                                      attribute:NSLayoutAttributeWidth
                                                                      relatedBy:NSLayoutRelationEqual
                                                                         toItem:standardView
                                                                      attribute:NSLayoutAttributeWidth
                                                                     multiplier:iconViewWeightRatio
                                                                       constant:0.0f];
        [self addConstraint:constraint];
        
        constraint = [NSLayoutConstraint constraintWithItem:_titileLabel
                                                  attribute:NSLayoutAttributeWidth
                                                  relatedBy:NSLayoutRelationEqual
                                                     toItem:standardView
                                                  attribute:NSLayoutAttributeWidth
                                                 multiplier:titileLabelWightRatio
                                                   constant:0.0f];
        [self addConstraint:constraint];
        constraint = [NSLayoutConstraint constraintWithItem:_timeLabel
                                                  attribute:NSLayoutAttributeWidth
                                                  relatedBy:NSLayoutRelationEqual
                                                     toItem:standardView
                                                  attribute:NSLayoutAttributeWidth
                                                 multiplier:timeLabelWightRatio
                                                   constant:0.0f];
        [self addConstraint:constraint];
        
        constraints = [NSLayoutConstraint constraintsWithVisualFormat:@"|-[_iconView]-[_titileLabel]-[_timeLabel]-|"
                                                              options:NSLayoutFormatAlignAllCenterY
                                                              metrics:nil
                                                                views:views];
        [self addConstraints:constraints];
    
        constraint = [NSLayoutConstraint constraintWithItem:_iconView
                                                  attribute:NSLayoutAttributeCenterY
                                                  relatedBy:NSLayoutRelationEqual
                                                     toItem:self.contentView
                                                  attribute:NSLayoutAttributeCenterY
                                                 multiplier:1.0
                                                   constant:0.0f];
        [self addConstraint:constraint];

    代码更加简介,但这适用于一些特定的场合

  • 相关阅读:
    byvoid
    soa文章摘抄
    也谈设计模式,架构,框架和类库的区别
    GoF设计模式三作者15年后再谈模式
    陈梓涵:我们为什么要学习设计模式
    陈梓涵:关于编程的胡扯
    hung task机制
    iscsi target tgt架构
    iscsi target IET架构
    ISCSI工作流程target和initiator
  • 原文地址:https://www.cnblogs.com/scaptain/p/4172749.html
Copyright © 2011-2022 走看看