[英]UITableviewCell subview appears only on scrolling or cell reuse (iOS)
嘗試使用dequeueReusableCellWithIdentifier:forIndexPath:
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
CustomTableViewCell *cell1 = (CustomTableViewCell *)[tableView dequeueReusableCellWithIdentifier:@"CustomID" forIndexPath:indexPath];
最可能的問題是,當您首次通過調用以下內容訪問單元格的幀高度時
cell.categoryRoundBackground.frame.size.height / 2
該單元格從未放置在表格視圖中,也不知道其框架高度將是什么,因此它使用一些默認值。 實際高度取決於您的代碼在heightForRowAtIndexPath:
方法中返回的值。
您可以通過自己計算幀大小來解決此問題。 您應該能夠執行此操作,因為您的代碼將值提供給heightForRowAtIndexPath:
在視圖布局其子視圖之前,可能需要更改拐角半徑。 你應該盡量把線
cell.categoryRoundBackground.layer.cornerRadius=cell.categoryRoundBackground.frame.size.height/2;
內
- (void)viewDidLayoutSubviews {}
您必須重寫CustomTableViewCell中的方法
- (void)layoutSubviews{
[super layoutSubviews];
self.categoryRoundBackground.layer.cornerRadius=self.categoryRoundBackground.frame.size.height/2;
self.categoryRoundBackground.layer.masksToBounds = YES;
}
在CellForRowAtIndexPath中:您必須在最后寫這些行
// Update layout
[cell.contentView setNeedsLayout];
[cell.contentView layoutIfNeeded];
希望它能解決您的問題
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.