6
我在使用UIBezierPath時遇到了UITableViewCell中的自動佈局約束問題。我的細胞不會全寬。你可以看到圖像1和圖像2的不同。圖像2我沒有添加圓角。UITableViewCell自動佈局寬度不與UIBezierPath一起使用
圖像1
圖像2
以前,我具有的UIView與UIBezierPath同樣的問題(你可以看到所述第一2的UIView用 「0」) 。我使用的解決辦法是掩蓋viewDidLayoutSubviews舍入角落像下面的代碼: -
- (void)viewDidLayoutSubviews {
[super viewDidLayoutSubviews];
[self.view layoutIfNeeded];
UIView *container = (UIView *)[self.view viewWithTag:100101];
[container setBackgroundColor:[UIColor colorWithHexString:@"ffffff"]];
[self setMaskTo:container byRoundingCorners:UIRectCornerAllCorners];
}
但現在我的UITableViewCell很卡,因爲我不能在viewDidLayoutSubviews添加四捨五入的角落。我的代碼如下: -
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
static NSString *CellIdentifier = @"myData";
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
if (cell == nil) {
cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier];
}
MyWClass *w = [_wData objectAtIndex:indexPath.row];
UIView *container = (UIView *) [cell viewWithTag:200001];
[container setBackgroundColor:[UIColor colorWithHexString:w.bgColor]];
UIBezierPath *maskPath = [UIBezierPath bezierPathWithRoundedRect:container.layer.bounds
byRoundingCorners:UIRectCornerTopLeft | UIRectCornerTopRight
cornerRadii:CGSizeMake(10.0, 10.0)];
CAShapeLayer *maskLayer = [CAShapeLayer layer];
maskLayer.frame = container.bounds;
maskLayer.path = maskPath.CGPath;
container.layer.mask = maskLayer;
[cell setBackgroundColor:[UIColor colorWithHexString:@"#efeff4"]];
cell.layer.masksToBounds = NO;
cell.layer.shadowOpacity = 1.0;
cell.layer.shadowOffset = CGSizeMake(0, 2);
cell.layer.shadowColor = [UIColor colorWithHexString:@"#e4e4e8"].CGColor;
cell.layer.shadowRadius = 0;
return cell;
}
我嘗試添加[cell.contentView layoutIfNeeded];
但仍然相同。
任何幫助,將不勝感激。
'container.layer.masksToBounds = YES;'或'-clipsToBounds' – 0yeoj
@ 0yeoj試過了,仍然沒有工作 – skycrew
如果您滾動你的細胞屏幕外,他們做自我修復滾動時他們回來? – stefandouganhyde