2010-12-09 73 views

回答

3

一个不使用drawrect的简单选项就是在两个按钮之间放一个瘦UIView。将视图的背景色设置为所需的线颜色。

编辑:
您仍然可以使用瘦UIViews并根据需要切换其可见性。
如果您仍想绘制线条,则可能需要创建自定义UIView。

@interface CustomView : UIView { 
    UIButton *button1; 
    UIButton *button2; 
} 
@end 

@implementation CustomView 

- (id) initWithFrame:(CGRect)frame { 
    if (self = [super initWithFrame:frame]) { 
     UIButton *btn1 = [UIButton buttonWithType:UIButtonTypeRoundedRect]; 
     btn1.frame = CGRectMake(20, 5, 80, 30); 
     [btn1 setTitle:@"Button1" forState:UIControlStateNormal]; 
     [btn1 addTarget:self action:@selector(buttonPressed:) 
       forControlEvents:UIControlEventTouchUpInside]; 
     button1 = btn1; 
     [self addSubview:btn1]; 

     UIButton *btn2 = [UIButton buttonWithType:UIButtonTypeRoundedRect]; 
     btn2.frame = CGRectMake(20, 60, 80, 30); 
     [btn2 setTitle:@"Button2" forState:UIControlStateNormal]; 
     [btn2 addTarget:self action:@selector(buttonPressed:) 
       forControlEvents:UIControlEventTouchUpInside]; 
     button2 = btn2; 
     [self addSubview:btn2]; 
    } 
    return self; 
} 

-(void)drawRect:(CGRect)rect 
{ 
    CGContextRef context = UIGraphicsGetCurrentContext(); 
    if (button1.selected) 
     CGContextSetRGBStrokeColor(context, 1.0, 0.0, 0.0, 1.0); 
    else 
     CGContextSetRGBStrokeColor(context, 0.0, 1.0, 0.0, 1.0); 
    CGContextSetLineWidth(context, 1.0); 
    CGContextBeginPath(context); 
    CGContextMoveToPoint(context, 10.0, 45.0); 
    CGContextAddLineToPoint(context, 150.0, 45.0); 
    if (button1.selected) 
    { 
     CGContextAddLineToPoint(context, 180.0, 35.0);  
    } 
    CGContextDrawPath(context, kCGPathStroke); 
} 

-(void)buttonPressed:(UIButton *)button 
{ 
    button1.selected = !button1.selected; 
    button2.selected = !button2.selected; 
    [self setNeedsDisplay]; 
} 

@end 
+0

这是一个不错的选择,但我想画线。基本上,当一个按钮处于选定状态时,其他部分将被绘制,其他部分则不会被绘制,其他部分保持原样。反之亦然 – Nishit 2010-12-09 13:55:49

相关问题