【问题标题】:Rounded corner on UIView is not preciseUIView 上的圆角不精确
【发布时间】:2013-01-16 13:14:41
【问题描述】:

我在 UIView 上的圆角有一个奇怪的问题。 正如您在屏幕截图中看到的,黑色角落并不完全准确,这意味着可以看到底层视图的一些像素(即角落中用黄色箭头突出显示的白色像素)。 p>

我已经这样设置了圆角半径:

contentView.layer.cornerRadius = 5.0f;
contentView.layer.masksToBounds = YES;

contentView 是一个 UIView 对象,它包含一个 UIImageView 作为子视图(当前显示 Google 图像)。此外,contentView 作为子视图添加到屏幕截图中显示的主视图中。

我已经尝试了一些没有令人满意的结果,包括:

  • 将圆角半径直接添加到主视图,而不是内容 查看
  • 增加/减少边框大小和圆角半径的值
  • 将所有提及的视图的背景颜色更改为黑色、白色和清晰(目前是清晰的)

感谢您的帮助。谢谢!

截图

【问题讨论】:

  • 试试 contentView.clipsToBounds = YES;
  • 属性 clipsToBounds 可以帮助你,将其设置为“YES”。
  • @CRDave:我已经试过了,没有效果。据我所知,这应该与 maskToBounds 具有相同的效果。
  • UIImageView 和 UIView 的边界是否相同?
  • 试试这个链接maniacdev.com/2013/01/…

标签: iphone ios objective-c uiview


【解决方案1】:

请在代码中试试这个:

contentView.layer.borderWidth=1;
contentView.layer.borderColor=[UIColor blackColor].CGColor;
contentView.layer.cornerRadius=5;

【讨论】:

【解决方案2】:

我已经尝试了以下代码,对我来说效果很好

UIView *vi = [[[UIView alloc] initWithFrame:frame] autorelease];
vi.backgroundColor = [UIColor clearColor];
[self addSubview:vi];

UIImageView *imgv = [[[UIImageView alloc] initWithFrame:CGRectMake(0.0, 0.0, frame.size.width, frame.size.height)] autorelease];
imgv.layer.cornerRadius = 4.0;
imgv.layer.borderColor = [UIColor whiteColor].CGColor;
imgv.clipsToBounds = YES;
imgv.image = [UIImage imageNamed:@"xxxxxx.png"];
[vi addSubview:imgv];

希望对你有所帮助。

【讨论】:

  • 好的,现在可以了。我所做的如下:1.)将 contentView 的背景颜色设置为清除(如您的代码中所观察到的那样)2.)按照@CRDave 的建议,从 imageview 到 contentView(1pt)添加了一个小边距我仍然认为这是不知何故,一个错误,或一个奇怪的行为。但它现在有效,我很高兴。 :-)
  • 有什么区别?请添加一些解释
猜你喜欢
  • 1970-01-01
  • 2013-05-15
  • 1970-01-01
  • 2010-12-03
  • 1970-01-01
  • 2011-01-24
  • 2016-01-21
  • 1970-01-01
相关资源
最近更新 更多