setRadiusCorner就在视图的底部

时间:2011-12-12 17:43:09

标签: view uiview calayer layer cornerradius

我有圆角的视图。 我想让它在视图的两个底角处四舍五入。 我怎么能这样做?

这是我为视图制作圆角的代码:

CALayer *myLayer = moreInfoView.layer;
[myLayer setCornerRadius:20.0];
[view.layer setMasksToBounds:YES];

有可能吗?

谢谢!

2 个答案:

答案 0 :(得分:3)

仅围绕UIRectCornerBottomLeftUIRectCornerBottomRight角落:

UIBezierPath *path = [UIBezierPath bezierPathWithRoundedRect:yourView.bounds
                                           byRoundingCorners:(UIRectCornerBottomLeft | UIRectCornerBottomRight)
                                                 cornerRadii:CGSizeMake(5.0, 5.0)];

CAShapeLayer *layer = [CAShapeLayer layer];
layer.frame = yourView.bounds;
layer.path = path.CGPath;
yourView.layer.mask = layer;

答案 1 :(得分:0)

不要认为你可以轻松地使用CALayer - 你可以继承NSView并制作一个简单的重绘例程。最简单的方法是使用http://www.cocoadev.com/index.pl?RoundedRectangles作为起点(删除两个bezier路径后,你不想要舍入),然后做一个简单的事情:

- (void)drawRect:(CGRect)rect
{
    self.layer.masksToBounds = NO;
    self.layer.shadowColor = [[UIColor xxxx] CGColor];
    self.layer.shadowOffset = CGSizeMake(0,2);
    self.layer.shadowRadius = ...
    self.layer.shadowOpacity = ...

    UIBezierPath *path = [UIBezierPath bezierPathWithPartiallyRoundedRect:rect
           byRoundingCorners:UIRectCornerAllCorners cornerRadii:CGSizeMake(20, 20)];
    [[UIColor blackColor] setFill or Stroke];

    [path stroke or fill];
}

在上面的链接中 - 第二个简化的例子让你的生活变得更轻松 - 因为你可以简单地将它们中的两个做成'path lineToPoint:..'。