2011-09-13 3 views
0

Ive добавил кнопки в мой вид программно, и я хочу, чтобы позже изменил их цвет фона. Кнопки имеют тип custom. Следующий код не действует.Доступ программно создан UIbuttons: object-c

for(UIView *v in [self.view subviews]){ 
     if ([v isKindOfClass:[UIButton class]]){ 
      //NSLog(@"View : %@", v); 
      [v setBackgroundColor:[UIColor redColor]]; 
     } 
    } 

Может ли кто-нибудь помочь?

+0

Вы установили рамку кнопок? – ms83

ответ

0

Чтобы перефразировать - вы не можете изменить цвет UIButton (с помощью UIButtonTypeRoundedRect). Когда вы пытаетесь изменить цвет фона, вы скорее меняете цвет прямоугольника, на который нарисована кнопка (что обычно ясно). Таким образом, есть два пути. Либо вы подклассифицируете UIButton, либо перезаписываете его метод -drawRect: или создаете изображения для разных состояний кнопок (что отлично подходит).

Если вы используете IB, чтобы установить фоновые изображения, вы заметите, что IB не поддерживает установку изображения для всех состояний кнопки может иметь, так что я рекомендую устанавливать изображения в коде, как так -

UIButton *button = [UIButton buttonWithType:UIButtonTypeCustom]; 
[button setBackgroundImage:[UIImage imageNamed:@"normal.png"] forState:UIControlStateNormal]; 
[button setBackgroundImage:[UIImage imageNamed:@"disabled.png"] forState:UIControlStateDisabled]; 
[button setBackgroundImage:[UIImage imageNamed:@"selected.png"] forState:UIControlStateSelected]; 
[button setBackgroundImage:[UIImage imageNamed:@"higligted.png"] forState:UIControlStateHighlighted]; 
[button setBackgroundImage:[UIImage imageNamed:@"highlighted+selected.png"] forState:(UIControlStateHighlighted | UIControlStateSelected)]; 

В последней строке показано, как установить изображение для выбранного состояния & (это тот, который не может установить IB). Вам не нужны выбранные изображения (строка 4 & 6), если вы не хотите, чтобы вы выбрали состояние.

Смежные вопросы