表视图单元格图像中的ios毛刺

时间:2015-12-31 12:54:23

标签: ios swift cocoa-touch

我是快速语言的新手...... 用图像制作简单的表格,并想在单元格内设置图像视图的角半径。

代码: -

cell.imageView?.layer.cornerRadius =  20

不知道我做错了什么,但是当我开始滚动表格正确设置时,表格显示时未设置转角半径... enter image description here

编辑: - GLSurfaceView获得良好的结果 不知道它为何与静态值一起工作。

3 个答案:

答案 0 :(得分:3)

这是因为ImageView在第一次加载tableView时仍未获得Width或Height值。 您必须在Storyboard中的单元格内传递imageView的宽度和高度。

如果您没有传递宽度或高度,请在viewDidAppear方法中重新加载表视图。

您可以按照图像中的建议在Cell中为ImageView设置约束。

enter image description here

enter image description here

输出:

enter image description here

创建单元格时应用圆角半径。

-(UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath{

static NSString *cellIdentifier = @"cell";

UITableViewCell *cell = (UITableViewCell *)[tableView dequeueReusableCellWithIdentifier:cellIdentifier];

if (!cell)
{
    cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:cellIdentifier];
}

UIImageView *imgView = (UIImageView *) [cell.contentView viewWithTag:9];

NSLog(@"Frame : %@", NSStringFromCGRect(imgView.frame));

imgView.layer.cornerRadius = imgView.frame.size.width/2.0;
imgView.layer.masksToBounds = YES;
//imgView.clipsToBounds = YES;

UILabel *lbl = (UILabel *)[cell.contentView viewWithTag:99];
if(indexPath.row % 2 == 0){

    lbl.text = [NSString stringWithFormat:@"Index : %ld -- I am Even....I am Even....I am Even....I am Even....I am Even....I am Even....I am Even....I am Even....I am Even....I am Even....I am Even....I am Even....I am Even....I am Even....I am Even....I am Even....I am Even....I am Even....I am Even....",(long)indexPath.row];

}else{

    lbl.text = [NSString stringWithFormat:@"Index : %ld -- I am Odd....I am Odd....I am Odd....I am Odd....I am Odd....I am Odd....I am Odd....I am Odd....",(long)indexPath.row];

}
return cell;
}

答案 1 :(得分:0)

如果您要创建自己的imageView,最好在自定义TableViewCell中设置cornerRadius。

class CircularTableViewCell: UITableViewCell {
@IBOutlet weak var circularImageView: UIImageView!
override func layoutSubviews() {
    circularImageView.layer.cornerRadius = circularImageView.bounds.height / 2
    circularImageView.clipsToBounds = true
}

请注意,除非您将imageView的宽高比设置为1:1,否则cornerRadius属性无法保证视图绝对是圆形的。另一种创建圆形视图的方法是使用Mask。

答案 2 :(得分:0)

您的代码为true但代码正在排序错误

这是:

cell.imageView?.layer.cornerRadius =  cell.imageView!.frame.size.height/2
cell.imageView?.layer.masksToBounds = true
cell.imageView?.image = UIImage(named: "avatar")