如何从UIButton控件中删除尖锐的矩形边?

时间:2011-07-29 17:27:12

标签: ios xcode4

看一下下图:

enter image description here

正如您所看到的那样,边缘是尖锐的矩形,它们是从圆角按钮出来的。我怎么能不显示边缘而只显示圆形按钮?

更新(解决方案):

我使用以下代码来实现圆角:

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];

3 个答案:

答案 0 :(得分: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>

希望这有帮助

答案 1 :(得分:5)

我认为所有这些都可以通过以下方式实现:

self.stopButton.layer.cornerRadius = 12.0;

但你有没有尝试

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

答案 2 :(得分:0)

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