以编程方式创建具有2个以上边框的按钮

时间:2014-10-13 05:56:04

标签: ios objective-c

我需要创建一个带有2个以上边框的按钮,如下图所示。 任何人都可以指出这样做的方向,而不会再出现图像吗?

谢谢。

enter image description here

3 个答案:

答案 0 :(得分:1)

添加阴影和边框很简单。

1)将QuartzCore框架添加到目标。

2)在要添加边框和阴影的类中导入框架标题。 (或者如果你有按钮的自定义类,那么你可以在该类中简单地导入这个框架。)

3)要向按钮添加边框,请使用此代码(其中按钮是与界面中的按钮连接的IBOutlet):

[self.button.layer setBorderWidth:3.0];
[self.button.layer setBorderColor:[[UIColor blackColor] CGColor]];

4)要将阴影添加到按钮,请使用以下代码:

[self.button.layer setShadowOffset:CGSizeMake(5, 5)];
[self.button.layer setShadowColor:[[UIColor blackColor] CGColor]];
[self.button.layer setShadowOpacity:0.5];

答案 1 :(得分:1)

其他选项:

  1. 创建黑色视图
  2. 在第一个视图中创建红色视图
  3. 在第一个视图中创建小于红色视图的灰色视图
  4. 在第一个视图中添加尺寸小于灰色视图的白色背景的按钮

答案 2 :(得分:0)

@joao,

以下是您可以根据需要进一步调整代码的核心代码,

.h文件

#import <UIKit/UIKit.h>

@interface OD : UIButton

@end

.m文件

#import "OD.h"

@implementation OD
-(void)drawRect:(CGRect)rect
{
//    self.layer.borderColor = [UIColor blackColor].CGColor;
    UIBezierPath *aPath = [UIBezierPath bezierPath];
    [aPath moveToPoint:CGPointMake(2, 2)];

    // Draw the lines.
    [aPath addLineToPoint:CGPointMake(rect.size.width -4, 2)];
    [aPath addLineToPoint:CGPointMake(rect.size.width -4,rect.size.height-4 )];
    [aPath addLineToPoint:CGPointMake(2, rect.size.height-4)];
    [aPath addLineToPoint:CGPointMake(0, 0)];

    [[UIColor greenColor] setStroke];
//    [[UIColor redColor] setFill];
    aPath.lineWidth = 5;

    [aPath fill];
    [aPath stroke];
    [aPath closePath];

    UIBezierPath *bPath = [UIBezierPath bezierPath];
    [bPath moveToPoint:CGPointMake(8, 8)];

    // Draw the lines.
    [bPath addLineToPoint:CGPointMake(rect.size.width -8, 6)];
    [bPath addLineToPoint:CGPointMake(rect.size.width -8,rect.size.height-8 )];
    [bPath addLineToPoint:CGPointMake(8, rect.size.height-8)];
    [bPath addLineToPoint:CGPointMake(8, 8)];

    [[UIColor redColor] setStroke];
    //    [[UIColor redColor] setFill];
    bPath.lineWidth = 5;

    [bPath fill];
    [bPath stroke];
    [bPath closePath];

    self.layer.borderWidth = 2;

//    self.layer.
}
@end