美文网首页
iOS之UIStackView(xib升级版)

iOS之UIStackView(xib升级版)

作者: 思念那年慕云 | 来源:发表于2016-09-02 11:17 被阅读114次
    第一步
    第二步
    #(1)内部控件也可以选中,然后再包裹一个UIStackView进行布局。
    #(2)个人感觉,简单的布局,比较有规律的选UIStackView,反之,还是自己设置布局简单点。
    

    接下来当然是自适应高度了

    这里使用ios6之后出的systemLayoutSizeFittingSize,
    只需要在原来正常使用tableView的基础上,加上下面的内容就OK了。

    //在cell的.m文件中设置要自适应的label的宽度
    - (void)awakeFromNib {
        [super awakeFromNib];
        //注意:这里一定要写上需要自适应高度的label的最大宽。
        //注意:这里的右侧要写屏幕的宽度,不要写当前cell的宽度,因为它默认是根据xib中cell拖的大小来算的。
        self.contentLabel.preferredMaxLayoutWidth = [UIScreen mainScreen].bounds.size.width;
        self.timeLabel.preferredMaxLayoutWidth = [UIScreen mainScreen].bounds.size.width;
    }
    
    -(CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath
    {
        ThirdTableViewCell *cell = (ThirdTableViewCell *)[self tableView:self.tableView cellForRowAtIndexPath:indexPath];
    /**
     *下面三种方法获取cell来计算高度是不准确的,以后采取上面的方式来获取cell
     
     //1
     ThirdTableViewCell *cell = [[[NSBundle mainBundle] loadNibNamed:@"ThirdTableViewCell" owner:self options:nil] lastObject];
     
     //2
     ThirdTableViewCell *cell = [tableView cellForRowAtIndexPath:indexPath];
     
     //3
     ThirdTableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:ThirdTableViewCellID];
     if (!cell) {
     cell = [[[NSBundle mainBundle] loadNibNamed:@"ThirdTableViewCell" owner:self options:nil] lastObject];
     }
     */
    
    //立即更新约束,暂时没有发现作用
    //    [cell setNeedsUpdateConstraints];
    //    [cell updateConstraintsIfNeeded];
        
        CGSize cellSize = [cell.contentView systemLayoutSizeFittingSize:UILayoutFittingCompressedSize];
        NSLog(@"cellSizeH----%f",cellSize.height);
        return cellSize.height+1;  //计算的高度误差为1
    
    }
    

    相关文章

      网友评论

          本文标题:iOS之UIStackView(xib升级版)

          本文链接:https://www.haomeiwen.com/subject/cubhettx.html