2013-09-23 1 views
0

У меня есть UIControl подкласс, где у меня есть drawRect. Я пытаюсь нарисовать прямоугольник внутри метода drawRect, используя UIBezierPath. Вызывается все соответствующие методы, ничего не равно null, и приложение запускается без проблем. Проблема в том, что ничего, кроме кадра, не нарисовано. Значит, я вижу область кадра, потому что она черная, но я не вижу ничего, что было нарисовано на кадре.drawRect: вызывается, только показывает рамку, а не рисунок

Вот что я делаю, чтобы создать экземпляр класса:

ZHButton *button = 
    [[ZHButton alloc] initWithFrame:CGRectMake(100, 200, 100, 50)]; 
button.buttonType = NSSelectorFromString(LEFT_ROUNDED_CORNER_BUTTON); 
[self.view addSubview:button]; 

Вот это DrawRect: метод, который вызывает различные методы, используя селектор:

- (void)drawRect:(CGRect)rect { 
    UIBezierPath *button = [self performSelector:self.buttonType withObject:nil]; 
    [[UIColor orangeColor] setFill]; 
    [button fill]; 
} 

- (UIBezierPath *)drawButtonWithLeftCornersRounded { 
     return [UIBezierPath bezierPathWithRoundedRect:self.frame 
            byRoundingCorners:UIRectCornerTopLeft | 
                 UIRectCornerBottomLeft 
              cornerRadii:buttonRadii]; 
} 

Все кажется, работает нормально , но UIBezierPath не нарисован. Кроме того, не уверен, что использование селектора - лучший способ сделать это. Кто-нибудь знает, что с этим происходит?

ответ

0

Решено. В drawButtonWithLeftCornersRoundedbezierPathWithRoundedRect не должно быть self.frame. Это приведет к тому, что координаты x и y будут находиться в местоположении x, y внутри кадра, а не в представлении. Я изменил его следующим образом:

CGRectMake(0, 0, self.bounds.size.width, self.bounds.size.height); 
0

Кажется, вы не вызываете метод drawButtonWithLeftCornersRounded. Я считаю, что эта линия не так:

[self performSelector:self.buttonType withObject:nil]; 

Но это должно быть:

[self performSelector:@selector(drawButtonWithLeftCornersRounded) withObject:nil]; 

Надеется, что это помогает!

+0

drawButtonWithLeftCornersRounded вызывается. self.buttonType - это селектор. Я пробовал ваши изменения, он имел те же результаты. – tentmaking