iOS: как заставить UIButton получить синий оттенок при нажатии? - PullRequest
1 голос
/ 04 сентября 2011

Я пытаюсь имитировать поведение кнопки воспроизведения в случайном порядке в приложении iPod на iphone.Я хочу, чтобы кнопка Shuffle вела себя точно так же, как кнопка iPod - когда пользователь нажимает кнопку, он получает синий оттенок и остается таким до тех пор, пока пользователь не нажмет кнопку снова, а затем он вернет свой белый оттенок. Чтобы показать вам, что я имею в виду, я прикрепляю изображение

Конечно, можно сохранить изображения в двух состояниях.Дело в том, что я подозреваю, что, возможно, это можно сделать программно.У меня джейлбрейкнутый телефон, поэтому я заглянул в папки приложения ipod и увидел там только обычный значок перемешивания (с белым оттенком, без синего оттенка).Я также нашел там PNG с просто синим фоном.

Так что вы думаете?Можно ли этого достичь, не используя два изображения с разными оттенками?

Ответы [ 3 ]

2 голосов
/ 05 сентября 2011

Единственный способ, которым я могу представить, - это пользовательский рисунок для UIButton. Так что сделайте .png изображение для нормального состояния и одно для нажатого, синего состояния. Так что создайте розетку и действие для своей кнопки. Также добавьте состояние BOOL * в заголовочный файл. Затем в viewDidLoad добавьте следующий код:

[yourButton setBackgroundImage:@"normalimage.png" forState:UIControlStateNormal];
[yourButton setBackgroundImage:@"normalimage.png" forState:UIControlStateHighlited];
state = NO

в действии для кнопки добавьте следующий код:

if (state == NO) {
    [yourButton setBackgroundImage:@"blueimage.png" forState:UIControlStateNormal];
    [yourButton setBackgroundImage:@"blueimage.png" forState:UIControlStateHighlited];
    state = YES;
}
else {
    [yourButton setBackgroundImage:@"normalimage.png" forState:UIControlStateNormal];
    [yourButton setBackgroundImage:@"normalimage.png" forState:UIControlStateHighlited];
    state = NO;
}

Довольно простые вещи. Я написал все по памяти, вам действительно нужно немного подумать, чтобы прийти к какому-либо представлению об этом ....

2 голосов
/ 05 сентября 2011

Используете ли вы стандартные кнопки или собственные значки? Я решил ту же проблему, переопределив метод drawRect: UIView, чтобы создавать свои собственные кнопки, которые рисуют сами по себе в зависимости от того, были ли они нажаты.

Вам необходимо иметь: переменная экземпляра в подклассе UIView для хранения состояния (нажата / не нажата).

пользовательский рисунок в подклассах UIView drawRect: метод для рисования вашей кнопки / значка в любом состоянии.

Код UITapGestureRecognizer в вашем контроллере представления для обработки обнаруженных касаний.

Это несколько изобретает колесо, чтобы получить действительно пользовательские кнопки, но вы это сделаете. иметь действительно красивый и самобытный пользовательский интерфейс, что и есть iOS и б. вы узнаете много, что вы используете другими способами. Инструменты отлично документированы Apple, ищите руководство по программированию CoreGraphics / Quartz и руководство по распознаванию жестов.

0 голосов
/ 05 сентября 2011

Самый простой способ добиться этого - сделать 2 варианта кнопки, одну нормальную и одну в «нажатом» состоянии.

С другой стороны, это естественным образом достигается на UITabBar.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...