2017-01-04 4 views
0

Я пытаюсь иметь границы для кнопок изменяются кнопки сразу прессуют, вот как в настоящее время выглядит код:Изменить цвет границы кнопок и после нажатия

[m_btnEthinic addObject:btnEthnicity1]; 
[m_btnEthinic addObject:btnEthnicity2]; 
[m_btnEthinic addObject:btnEthnicity3]; 
[m_btnEthinic addObject:btnEthnicity4]; 
[m_btnEthinic addObject:btnEthnicity5]; 
[m_btnEthinic addObject:btnEthnicity6]; 
[m_btnEthinic addObject:btnEthnicity7]; 
[m_btnEthinic addObject:btnEthnicity8]; 
[m_btnEthinic addObject:btnEthnicity9]; 
for (UIButton* btn in m_btnEthinic) { 
    btn.layer.borderWidth = 1; 
    btn.layer.cornerRadius = 13; 
    btn.layer.borderColor = COLOR_GRAYBORDERBTN.CGColor; 
    [btn setBackgroundColor: COLOR_PURP]; 
    [btn setTitleColor:[UIColor whiteColor] forState:UIControlStateNormal] 
+0

эти ** btnEthnicity ** создаются программно или с помощью видеоредактора ? –

+0

Они были сделаны на Раскадке –

+0

, тогда вы можете попробовать с ** IBOutletCollection ** NSArray с условиями –

ответ

0

Вы можете добавить селектор к вам кнопку, и используйте свойство BOOL для отслеживания состояния кнопки и цвета в селекторе. Если у вас есть набор кнопок, вам понадобится массив статусных флагов. Код ниже должен работать (извините за любую опечатку. В настоящее время я не нахожусь перед моим компьютером).

@property (strong, nonatomic) borderStatus; 

-(void)viewDidLoad { 
    borderStatus = NO; 
    [btn addTarget:self action:@selector(buttonPressed:) forControlEvents:UIControlEventTouchUpInside]; 
} 

-(void)buttonPressed:(id)sender { 
     if(borderStatus){ 
       ((UIButton*)sender).layer.borderColor = [UIColor redColor]; 
       borderStatus = NO; 
     } else { 
       ((UIButton*)sender).layer.borderColor = [UIColor greenColor]; 
       borderStatus = YES; 
     } 
    } 
0

, возможно, вам это может понадобиться. Вы можете добавить два события для кнопок. Поэтому установите границу, когда событие UIControlEventTouchDown ответит, и восстановите его, когда событие UIControlEventTouchUpInside ответ.

Все это на мое имя Github 'T_yunButtonBorder' [email protected]: xmy0010/DemoForCSDN.git

Как это:

- (void)viewDidLoad { 
    [super viewDidLoad]; 

    NSMutableArray *m_btnEthinic = @[].mutableCopy; 
    for (int i = 0; i < 8; i++) { 

     UIButton *btnEthnicity = [UIButton buttonWithType:UIButtonTypeCustom]; 
     [btnEthnicity setTitle:[NSString stringWithFormat:@"btn%d", i] forState:UIControlStateNormal]; 
     btnEthnicity.frame = CGRectMake(50, 50 + 40 * i, 50, 20); 
     btnEthnicity.backgroundColor = [UIColor redColor]; 
     [btnEthnicity addTarget:self action:@selector(btnEthnicityTouchDown:) forControlEvents: UIControlEventTouchDown]; 
     [btnEthnicity addTarget:self action:@selector(btnEthnicityTouchUp:) forControlEvents: UIControlEventTouchUpInside]; 
     [self.view addSubview:btnEthnicity]; 
     [m_btnEthinic addObject:btnEthnicity]; 
    } 
} 


- (void)btnEthnicityTouchDown:(UIButton *)sender { 

    NSLog(@"down"); 
    sender.layer.borderWidth = 2; 
    sender.layer.cornerRadius = 10; 
    sender.layer.borderColor = [UIColor greenColor].CGColor; 
} 

- (void)btnEthnicityTouchUp:(UIButton *)sender { 

    NSLog(@"up"); 
    sender.layer.borderWidth = 0; 
    sender.layer.cornerRadius = 0; 
} 
1

С раскадровки, вы можете сделать так:

  • перетащите и положите кнопку в viewcontroller
  • установить кнопку тег согласно b uttons
  • перетащите кнопки в .h и создать IBOutletCollection NSArray для кнопок. Вставьте все кнопки в одну розетку.
  • IBAction общий для всех кнопок.
    - (IBAction)btnActions:(UIButton *)sender;

common IBAction for uibutton

  • после создания IBAction, btnActions: метод будет создан в .m
-(IBAction) btnActions: (UIButton *) sender { 

    for (UIButton * b in self.btn) { 
    //checking if already have borders for the buttons 
    if (b.layer.cornerRadius == 13) { 
     b.layer.borderWidth = 0; 
     b.layer.cornerRadius = 0; 
    } 

    //setting the borders for the selected button 
    if (b.tag == sender.tag) { 
     b.layer.borderWidth = 2; 
     b.layer.cornerRadius = 13; 
     b.layer.borderColor = [UIColor yellowColor].CGColor; 
    } 
    } 
} 
Смежные вопросы