我想创建一个具有一些圆形子视图的表视图作为UIView。我设置了UIView的layer.cornerRadius和clipsToBounds。但有些观点不圆。谁能帮我解决这个问题或给我一些建议?
我的代码:
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath{
static NSString * settCellID = @"settingCellID";
UITableViewCell * cell = [tableView dequeueReusableCellWithIdentifier:settCellID];
if (!cell) {
cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:settCellID];
UIView * view = [[UIView alloc] initWithFrame:CGRectMake(100, 10, 20, 20)];
view.layer.cornerRadius = 10;
view.clipsToBounds = 1;
view.layer.rasterizationScale = [UIScreen mainScreen].scale;
view.layer.shouldRasterize = 1;
view.backgroundColor = [UIColor blueColor];
[cell.contentView addSubview:view];
}
return cell;
}
结果:
答案 0 :(得分:0)
在这个clipsToBound里面是Bool所以你应该给YES或NO并尝试使用maskToBound = YES for Corner Radius如果你想合并下面的视图比使用clipsToBound相应而且我不认为rasterizationScale和shouldRasterize是在这里很有用我希望这会帮助你。
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
static NSString * settCellID = @"settingCellID";
UITableViewCell * cell = [tableView dequeueReusableCellWithIdentifier:settCellID];
if (!cell) {
cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:settCellID];
UIView * view = [[UIView alloc] initWithFrame:CGRectMake(100, 10, 20, 20)];
view.layer.cornerRadius = 10;
view.clipsToBounds = YES;
view.maskToBounds =YES;
view.layer.rasterizationScale = [UIScreen mainScreen].scale;
view.layer.shouldRasterize = 1;
view.backgroundColor = [UIColor blueColor];
[cell.contentView addSubview:view];
}
return cell;
}
如果你想要UITableViewCell圆角和剪辑子视图而不是跟随此Link Click here
答案 1 :(得分:0)
rasterizationScale和shouldRasterize用于“离屏渲染”,但它对圆视图没有影响。并且“view.clipsToBounds = YES”是“view.layer.masksToBounds = 1”。我已经使用CGContextRef和UIBezierPath在UITableViewCell上创建了一个圆形视图,但它们无法创建真正的圆形视图。
答案 2 :(得分:0)
您将尝试使用创建自定义单元格类,并使用故事板创建您的视图而不是以编程方式创建视图。并在自定义单元格类中设置视图属性。然后实现上面的代码,但在这里我稍微改了一下。
static NSString * settCellID = @"settingCellID";
'CustomClassName' * cell = (CustomClassName*)[tableView dequeueReusableCellWithIdentifier:settCellID];
cell.viewPropertyName.layer.cornerRadius = 10;
cell.viewPropertyName.clipsToBounds = YES;
cell.viewPropertyName.maskToBounds =YES;
cell.viewPropertyName.backgroundColor = [UIColor blueColor];