Форум программистов, компьютерный форум CyberForum.ru

Программирование iOS/iPhone

Войти
Регистрация
Восстановить пароль
 
zulkis
681 / 608 / 38
Регистрация: 13.01.2011
Сообщений: 1,724
#1

UIButton bug? - Программирование iOS/iPhone

14.03.2013, 11:13. Просмотров 629. Ответов 4
Метки нет (Все метки)

steps2reproduce:
В общем создаем UIButton, кладем в него картинку(у меня это было из ниба)
Затем делаем -
Objective-C
1
[button setImage:nil forState:UIControlStateNormal];
и видим - что текст залэйаутился по центру, а картинка осталась...

При том, что если писать:
Objective-C
1
[button setImage:newImage forState:UIControlStateNormal];
или даже
Objective-C
1
[button setImage:[UIImage new] forState:UIControlStateNormal];
все типа "работает".
но это же бред какойто...
Яблокопрогеры чтото сломали, или это я что не так делаю?
Xcode Version 4.6 (4H127)
6.1 Simulator
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
14.03.2013, 11:13     UIButton bug?
Посмотрите здесь:

Софт Bug doktor
slow motion bug Windows 7
Objective-C Наследование UIButton
HTML, CSS Bug IE DropDown
Ruby on Rails [BUG] Segmentation fault
QFont has bug? C++ Qt
GCC/Clang bug C++
Xamarin Xamarin & UIButton
UITableView & UIButton
Java SE Bug debug режима
Curl bug PHP
Model + COM object = BUG ;) C# WPF .NET 4.x

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Vorona
Peace 2 all shining faces
666 / 528 / 45
Регистрация: 05.03.2010
Сообщений: 1,271
14.03.2013, 15:28     UIButton bug? #2
каким образом картинку кладете?
если в нибе в поле Image положить картинку и потом в коде написать
Objective-C
1
[button setImage:nil forState:UIControlStateNormal];
то картинки нету, а именно все работает нормально

ну и конечно же, если в нибе в поле Background положить картинку, а затем в коде написать
Objective-C
1
[button setImage:nil forState:UIControlStateNormal];
то естественно бэкграунд остается, надпись есть, а еще одной картинки уже нету, т.е. снова все правильно
ну и если же выполнить
Objective-C
1
[button setBackgroundImage:nil forState:UIControlStateNormal];
то бекграунд пропадет, снова все правильно
iOS 5.0 Xcode 4.2

потому, боюсь вы перепутали image и backgroundImage, либо стоит все-таки попробовать на 6.1 оси, а это уже дома
zulkis
681 / 608 / 38
Регистрация: 13.01.2011
Сообщений: 1,724
15.03.2013, 07:55  [ТС]     UIButton bug? #3
Vorona, спасибо конечно, но Вы не правы Я не из тех, кто путает палец с коленом и жалуется на боли в голове. Именно так, как я и описал. Баттон грузится из ниба, картинка сеттится в коде. Именно картинка, не бэкграунд.
Решил все же попробовать и создал кнопку руками... Все тоже самое. Как время выдастся - прикреплю маленький тест проект, дабы могли посмотреть как и что я делаю.

P.S Я еще не сказал, что когда у сетчу картинку в nil, текст лэйаутится верно, т.е по центру, однако картинка остается там где была (т.е она НЕ была удалена из imageView, при этом imageForState: выдает nil)

Добавлено через 1 час 24 минуты
Причина и решение бага:
Мой наследник от UIButton переопределял -layoutSubviews, где изменялась imageView.hidden пропертя по определенному условию.
И если она была YES, когда у кнопки вызывался setImage:forState, ДО новой итерации отрисовки, происходил этот странный баг.
Мой фикс был следующим: Я просто начал использовать alpha свойство вместо hidden. (И я знаю что это грязный хак, однако это быстрейший путь(и очевидный))
mobidevelop
182 / 182 / 3
Регистрация: 10.01.2013
Сообщений: 596
15.03.2013, 10:59     UIButton bug? #4
A setNeedsDisplay не чище?
zulkis
681 / 608 / 38
Регистрация: 13.01.2011
Сообщений: 1,724
15.03.2013, 11:21  [ТС]     UIButton bug? #5
Нет, не помогало. Это очевидный путь, но не срабатывает
Yandex
Объявления
15.03.2013, 11:21     UIButton bug?
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru