2011-07-29 112 views
8

看看下面的图片:如何从UIButton控件中删除尖锐的矩形边缘?

enter image description here

正如你所看到的边缘锐利的矩形,他们走出圆角按钮。我怎样才能不显示边缘,只显示圆形按钮?

UPDATE(解决方案):

我用下面的代码来实现圆角:

UIBezierPath *maskPath = [UIBezierPath bezierPathWithRoundedRect:self.stopButton.bounds 
             byRoundingCorners:UIRectCornerAllCorners 
             cornerRadii:CGSizeMake(12.0, 12.0)]; 

// Create the shape layer and set its path 
CAShapeLayer *maskLayer = [CAShapeLayer layer]; 
maskLayer.frame = self.stopButton.bounds; 
maskLayer.path = maskPath.CGPath; 
// Set the newly created shape layer as the mask for the image view's layer 
self.stopButton.layer.mask = maskLayer; 

新的问题:

此代码给我的startButtonRound.layer错误。 cornerRadius线。

UIButton *roundStartButton = [UIButton buttonWithType:UIButtonTypeRoundedRect]; 
     roundStartButton.frame = CGRectMake(10, 10, 100, 20); 
     [roundStartButton setBackgroundImage:[UIImage imageNamed:@"green_gradient.jpg"] forState:UIControlStateNormal]; 

     roundStartButton.layer.cornerRadius = 12.0; 
UIBarButtonItem *startButton = [[UIBarButtonItem alloc] initWithCustomView:roundStartButton]; 

回答

17

你可以单独使用的CALayer做到这一点:

CALayer *myLayer = [CALayer layer]; 
[myLayer setMasksToBounds:YES]; 
[myLayer setCornerRadius:5.0f]; 
[myLayer setBorderWidth:1.0f]; 
[myLayer setBorderColor: [[UIColor blackColor] CGColor]]; 
[myLayer setBackgroundColor: [[UIColor whiteColor] CGColor]]; 

您还需要包括QuartzCore框架,包括框架,你自己的头。

#include <QuartzCore/QuartzCore.h> 

希望这有助于

+0

我尝试过[button layer] setCornerRadius:5.0f];但它对按钮没有任何影响。 – azamsharp

+0

您可能需要将MasksToBounds设置为yes才能让图层将其内容剪裁为圆角。 –

+0

是否必须将UIButton声明为cornerRadius的IBOutlet才能使用?查看原来的帖子更新问题。 – azamsharp

5

我认为所有可与实现:

self.stopButton.layer.cornerRadius = 12.0; 

但是你尝试

self.stopButton.opaque = NO; 
self.stopButton.backgroundColor = [UIColor clearColor]; 

+0

谢谢比尔!这很好!我不知道我做了什么,但现在甚至没有角落Radius它没有显示边缘。但是,您的代码删除了我的5-6行代码,谢谢! – azamsharp

+0

UIButton.layer.cornerRadius不适用于我。它返回一个错误,但设置backgroundColor清除并将不透明设置为NO。 – okysabeni

+0

@Yko,你是字面上使用'UIButton.layer.cornerRadius'吗?这是(试图)访问类,而不是类的一个实例。 – bshirley

0

形成图像的外观,您已将UIButton背景颜色设置为“白色”。使其“清除颜色”。