Сегментированные элементы управления с 2 кнопками - PullRequest
0 голосов
/ 30 сентября 2011

Я пытаюсь создать сегментированный элемент управления с двумя круглыми прямоугольными кнопками, но не знаю, как установить 'forState' для выделенной кнопки.

Другие говорят, что установить фоновое изображение в IB и изменитьИзображение программно

Пробовал:

[buttonName setImage:[UIImage imageNamed:@"UnselectedImage.png"] forState:UIControlStateNormal];
[buttonName setImage:[UIImage imageNamed:@"SelectedImage.png"] forState:UIControlStateHighlighted];

Проблема в том, что фоновое изображение не восстанавливается после нажатия на него, какая-либо подсказка?

Ответы [ 4 ]

1 голос
/ 30 сентября 2011

Вы можете попробовать следующий код:

1 изображение:

int iButtonState = 1;

if (iButtonState  == 1) {
    [buttonName setImage:[UIImage imageNamed:@"Normal.png"] forState:UIControlStateNormal];
    iButtonState = 2;
} else if (iButtonState  == 2) {
    [buttonName setImage:[UIImage imageNamed:@"Other.png"] forState:UIControlStateNormal];
    iButtonState = 1;
}

2 изображения:

int iButtonState = 1;
int iTabImageA = 1;
int iTabImageB = 1;

if (iButtonState  == 1) {
    if (iTabImageA == 1) {
        [buttonName setImage:[UIImage imageNamed:@"ImageA1.png"] forState:UIControlStateNormal];
        iTabImageA = 2;
    } else if (iTabImageA == 2) {
        [buttonName setImage:[UIImage imageNamed:@"ImageA2.png"] forState:UIControlStateNormal];
        iTabImageA = 1;
    }
    iButtonState = 2;
} else if (iButtonState  == 2) {
    if (iTabImageB == 1) {
        [buttonName setImage:[UIImage imageNamed:@"ImageB1.png"] forState:UIControlStateNormal];
        iTabImageB = 2;
    } else if (iTabImageB == 2) {
        [buttonName setImage:[UIImage imageNamed:@"ImageB2.png"] forState:UIControlStateNormal];
        iTabImageB = 1;
    }
    iButtonState = 1;
}
1 голос
/ 30 сентября 2011

Вам нужно установить выбранное изображение для UIControlStateSelected, а не UIControlStateHighlighted

1 голос
/ 30 сентября 2011

UIButton является своего рода мгновенным переключателем.У него нет «горячего сейчас» состояния.«Выделенный» буквально просто во время нажатия, а затем он выходит из этого состояния.

Похоже, вам может понадобиться какая-то внешняя переменная для отслеживания состояния ваших кнопок и, возможно, для управления поворотомизображения тоже.

Мне нравится это изображение.Это будет хороший эффект, как только вы его запустите.

1 голос
/ 30 сентября 2011

«Подсвеченное» состояние используется только тогда, когда пользователь касается кнопки.Как только пользователь отпустит свой палец от кнопки, состояния вернутся в нормальное состояние.

Вместо этого вы можете попробовать использовать состояние «Выбрано» (не проверено, но стоит попробовать, поскольку это кажется вполне логичным).Если это не сработает, вам может потребоваться изменить «выбранное» состояние ваших кнопок по коду (в действии кнопки или в методах делегата segmentedControl)

...