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
1
A
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
Verwandte Themen
- 1. UIWindow und UIView addSubview Frage
- 2. IPhone - UIView addSubview Abstand oben
- 3. UIView addSubview und die Subview nicht
- 4. Zeichnen inkrementell in einer UIView (iPhone)
- 5. Mehrere Ansichten in einer Nib (addSubview)
- 6. addSubview Animation
- 7. Zeichnen eines Rechtecks in UIView
- 8. Unterschied zwischen addSubview und insertSubview in UIView-Klasse
- 9. PresentModalViewController oder addsubview?
- 10. Zeichnen UIBezierPaths in UIView ohne Unterklassen?
- 11. addSubview() in viewDidLoad() funktioniert nicht
- 12. Nativescript addSubview
- 13. Swift addsubview und entfernen
- 14. addSubView() und bringSubViewToFront() in viewDidLoad() funktioniert nicht
- 15. ios addSubview nicht scrollen in uiscrollview
- 16. Grenze auf UIView mit uibezierpath zeichnen
- 17. Zeichnen UIBezierPath auf Code generiert UIView
- 18. Nur addSubView in bestimmten Zellen
- 19. UIView - Zeichnen Bilder - Kachel basierte Spiel
- 20. Zeichnung außerhalb einer UIView
- 21. UIView Klasse
- 22. Hinzufügen mehrerer UIButtons zu einer UIView
- 23. addSubview funktioniert nicht
- 24. Hinzufügen einer Schaltfläche in einem UIView
- 25. Offset auf UIWindow addSubview
- 26. UiView Transition in UIView
- 27. UITextView - addSubview - Automatische Anordnung
- 28. Zeichnen einer Form in einem UIImageView IOS
- 29. Gewohnheit UIView in schnellen
- 30. Autolayout UILabel in einer UIView
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
Aktualisiert das Beispiel mit etwas näher an Ihrer Beschreibung. – Anna
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