2015-08-19 115 views
0

我想用自動佈局自動調整表格單元格的大小。但似乎TableView忽略高度限制。使用砌體自動佈局UITableViewCell

中的UITableViewCell

- (instancetype)initWithStyle:(UITableViewCellStyle)style reuseIdentifier:(NSString *)reuseIdentifier { 

self = [super initWithStyle:style reuseIdentifier:reuseIdentifier]; 
if (self) { 

     [self.icon mas_makeConstraints:^(MASConstraintMaker *make) { 

     make.top.equalTo(self.contentView).with.offset(10); 
     make.left.equalTo(self.contentView).with.offset(10); 
     make.width.equalTo(@70); 
//   make.height.equalTo(@70); 
     make.bottom.equalTo(self.contentView.mas_bottom).with.offset(10); 
    }]; 
    } 
} 

在UITableView的

XLTableViewCell * _cell = [[XLTableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:@"1"]; 



-(CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath { 

    CGSize size = [_cell.contentView systemLayoutSizeFittingSize:UILayoutFittingCompressedSize]; 
    NSLog(@"%f",size.height); 

    // size.height is 0.0f; 
    return size.height + 1; 
} 

我試圖創建的UITableViewCell圖像(70x70)。 image.top = 10,image.left = 10,image.bottom = 10.

回答

2

每當我們向可變高度的組件添加約束條件時,請不要將其限制在底部。只需添加一些常量高度約束並更新那個不變的價值。

make.height.constant =一些值

和更新視圖約束使用它們中的一個

  • (無效)updateConstraintsIfNeeded NS_AVAILABLE_IOS(6_0)

    ; //根據接收器更新視圖層次結構的底層約束。如果需要,UIWindow的實現首先創建一個佈局引擎。

  • (void)updateConstraints NS_AVAILABLE_IOS(6_0); //覆蓋此值以在約束更新過程中調整您的特殊約束條件
  • (BOOL)needsUpdateConstraints NS_AVAILABLE_IOS(6_0);
  • (void)setNeedsUpdateConstraints NS_AVAILABLE_IOS(6_0);
+0

'make.height.constant'常數不在類MASConstraint.LOL發現 NICE,'make.height.with.offset(70);'是在本 – xx11dragon

+0

有make.height的view.mas_height瞬間.constant – Kavita

+0

我使用make.height.with.offset(70);工作中。謝謝 – xx11dragon