Изменить градиент для UIButton для разных состояний - PullRequest
0 голосов
/ 13 декабря 2011

Недавно я столкнулся с проблемой. У меня есть UIButton и 2 изображения для него. 1 для нормального состояния и 1 для выделенного. Проблема в том, что изображение в нормальном состоянии прозрачно, и я должен использовать градиент для его заполнения. Но если я это сделаю, мое выделенное изображение никогда не появится. Вот часть кода:

    UIImage *balloonImage = [[UIImage imageNamed:@"balloon.png"]resizableImageWithCapInsets:UIEdgeInsetsMake(3, 3, 3, 3)];
    UIImage *balloonImageDown = [[UIImage imageNamed:@"balloon-down.png"]resizableImageWithCapInsets:UIEdgeInsetsMake(3, 3, 3, 3)];

    CAGradientLayer *gradient = [CAGradientLayer layer];
    gradient.frame = CGRectMake(0, 0, 320 - 45 - 10, 100);
    gradient.cornerRadius = 3.0f;
    gradient.colors = [NSArray arrayWithObjects:(id)[[UIColor colorWithRed:221.0f/255.0f green:231.0f/255.0f blue:246.0f/255.0f alpha:1.0f]CGColor], (id)[[UIColor colorWithRed:191.0f/255.0f green:207.0f/255.0f blue:234.0f/255.0f alpha:1.0f] CGColor], nil];
    self.balloonButton = [UIButton buttonWithType:UIButtonTypeCustom];
    [self.balloonButton.layer insertSublayer:gradient atIndex:0];
    [self.balloonButton setBackgroundImage:balloonImage forState:UIControlStateNormal];
    [self.balloonButton setBackgroundImage:balloonImageDown forState:UIControlStateHighlighted];
    self.theImageView = [[[UIImageView alloc]init]autorelease];
    [self.balloonButton addSubview:theImageView];
    [self.contentView addSubview:balloonButton];

Градиент выглядит как надо, и все работает. За исключением изменения изображения, если кнопка нажата.

Есть ли способ поместить balloonImageDown перед градиентом? Или как я могу это сделать?

Любая помощь будет оценена.

1 Ответ

1 голос
/ 13 декабря 2011
[yourButton setTitleColor:[UIColor colorWithRed:0.3 green:0.6 blue:0.9 alpha:0.5]
//                                set 'alpha' to something less than 1. -----^^^

Это то, что вы делаете, чтобы сделать его прозрачным (изменение значения альфа). Вы должны изменить эти значения в методе Touchdown и Touchup.

...