У меня проблема с ограничениями автоматического макета в UITableViewCell при использовании с UIBezierPath. Моя ячейка не станет полной шириной. Вы можете видеть разные изображения между изображением 1 и изображением 2. Изображение 2 Я не добавлял углы округления.Ширина макета UITableViewCell не работает с UIBezierPath
Изображение 1
Изображение 2
Раньше у меня такая же проблема с UIBezierPath в UIView (вы можете увидеть первые 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