2010-12-09 16 views
1

Hallo Ich möchte zwei Schaltflächen auf einem UIView mit Interface Builder hinzufügen, und zeichnen Sie eine Linie zwischen diesen beiden Schaltflächen. Wie ist das möglich? Bitte vorschlagen. Dankezeichnen sowie addSubview in einer UIView

Antwort

3

Eine einfache Option ohne Verwendung von Drawrect ist es, nur eine dünne UIView zwischen den beiden Tasten zu setzen. Legen Sie die Hintergrundfarbe der Ansicht auf die gewünschte Linienfarbe fest.

Edit:
Sie noch dünn UIViews nutzen könnten und ihre Sichtbarkeit wechseln je nach Bedarf.
Wenn Sie immer noch die Linien zeichnen möchten, können Sie eine benutzerdefinierte UIView erstellen.

@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

Das ist eine gute Option, aber ich möchte die Linie in Teilen zeichnen. Grundsätzlich wird ein Teil der Linie gezeichnet, wenn sich eine Schaltfläche im ausgewählten Zustand und die andere im Normalzustand befindet, ansonsten wird sie nicht gezeichnet, und der andere Teil bleibt so wie er ist. Gleiches gilt für umgekehrt – Nishit

+0

Aktualisiert das Beispiel mit etwas näher an Ihrer Beschreibung. – Anna

+0

Danke für das Beispiel, ich denke, das wird reichen. Wenn ich irgendwelche Schwierigkeiten habe, werde ich es kommentieren, sonst werde ich es als die Antwort markieren. Nochmals vielen Dank. – Nishit