рисовать, а также addSubview в UIView - PullRequest
1 голос
/ 09 декабря 2010

Привет Я хочу добавить две кнопки в UIView с помощью Interface Builder и нарисовать линию между этими двумя кнопками. Как это возможно? Пожалуйста, предложите. Спасибо

1 Ответ

3 голосов
/ 09 декабря 2010

Простой вариант без использования 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
...