Изменить изображение кнопки в Objective C во время прохождения через метод - PullRequest
0 голосов
/ 16 апреля 2011

Я ищу идеи по изменению изображения UIButton по мере того, как метод прогрессирует после его нажатия, аналогично индикатору выполнения, но вместо этого это просто изменит изображение кнопки и сделает паузу, чтобы увидеть изображение, продолжить, изменить кнопку изображение, пауза, чтобы увидеть новое изображение, продолжить, а затем завершить на окончательном изображении. Я немного новичок в Objective C, поэтому любые советы будут с благодарностью.

Ответы [ 5 ]

0 голосов
/ 23 июля 2012

Чтобы изменить изображение для выбранного состояния, вы должны вызвать setImage для состояния UIControlStateSelected.Вы можете установить отдельные изображения для разных состояний (Обычное, Выделенное, Отключено, Выбрано и т. Д.).

0 голосов
/ 16 апреля 2011

Вы можете использовать Grand Central Dispatch для запуска обработки в отдельном потоке, а затем dispatch_sync с основным потоком для обновления пользовательского интерфейса.Это очень легко сделать, а GCD очень быстро.

0 голосов
/ 16 апреля 2011

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

Таким образом, важные моменты:

  • Любой долгоживущий метод должен выполняться вфон, чтобы пользовательский интерфейс мог продолжать обновлять.
  • Для отслеживания прогресса периодически вызывайте основной поток из фонового потока.
  • Выполняйте все свои обновления пользовательского интерфейса только из основного потока.
0 голосов
/ 16 апреля 2011
[btn_h setImage:[UIImage imageNamed:@"img.png"] forState:UIControlStateNormal];

    [btn_h setImage:[UIImage imageNamed:@"img1.png"] forState:UIControlStateHighlighted];
    [btn_h setImage:[UIImage imageNamed:@"img2.png"] forState:UIControlStateSelected];

С уважением, Шьям Пармар

0 голосов
/ 16 апреля 2011

Вы можете использовать buttonType Custom (не RoundRect).и установите его BackgroundImage.В тех методах, о которых вы говорите, просто измените BackgroundImage, и оно будет работать.

Спасибо,

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