UIToolbar tint на iOS 4

Отъезд:

https://github.com/shaneharter/sheldon

Довольно легко начать. Он включает библиотеки Symfony2 и Zend Framework, которые выполняют большую часть основной работы ввода-вывода консоли и предоставляют абстракцию более высокого уровня, построенную вокруг объектов Command (с маршрутами регулярных выражений) и контекстов (которые содержат неизменяемое состояние).

Одна из вещей, которые мне нравятся, заключается в том, что «из коробки» ваше приложение может работать как интерактивная оболочка, или как стандартный скрипт, который вы можете запустить из командной строки, указать команду, передать любые аргументы, и когда команда завершена, приложение завершает работу.

13
задан BoltClock 25 November 2011 в 08:19
поделиться

2 ответа

(здесь надо быть откровенным - я знал ответ до публикации, просто не знал, как загрузить эти данные в StackOverflow. Думал, что решение, которое я нашел, было ценным для других, поэтому хотел опубликовать его здесь. Я новичок здесь, пожалуйста, без резких критиков :))

Итак, в конечном итоге проблема возникла в результате, AFAICT, изменения поведения в ОС.

Как уже говорилось, код оттенка работал до обновления и был написан следующим образом:

// Toolbar content               
NSArray *items=[NSArray arrayWithObjects: ... ]; // PSEUDO CODE HERE
[toolbar setItems:items]; 

// Add tint
toolbar.tintColor = [UIColor colorWithRed:0.83 green:0.43 blue:0.57 alpha:0.5];

Мне нужно было просто изменить порядок вещей:

// Add tint
toolbar.tintColor = [UIColor colorWithRed:0.83 green:0.43 blue:0.57 alpha:0.5];

// Toolbar content               
NSArray *items=[NSArray arrayWithObjects: ... ]; // PSEUDO CODE HERE
[toolbar setItems:items]; 

(Если вы создали UIToolbar в Interface Builder, вы можете изменить там он оттенок, и это относится и к кнопкам).

Думаю, оттенок обновлял все кнопки до iOS 4, а в iOS 4 этого не делал, и при добавлении кнопок они проверяют существующий оттенок. Но это только предположение. Решение в любом случае работает ...

Надеюсь, это кому-то поможет, и что я не нарушал никаких священных правил SO ...

Ура!

23
ответ дан 1 December 2019 в 19:49
поделиться

Что ж, это больше похоже на ошибку ОС, чем на функцию, поскольку панели навигации меняют цвет своего элемента, когда вы устанавливаете их tintColor.

Мы обнаружили, что если вы измените стиль предмета, он обновит их цвет в качестве побочного эффекта. В нашем случае сработало следующее. Исходные кнопки имеют рамку, поэтому мы изменили их на простые и снова установили границу. Вы можете создать более сложный и общий код, который сохраняет текущий стиль, устанавливает другой, а затем переключается обратно. Мне просто лень это делать. : D В общем, идею вы поняли.

toolbar.tintColor = //<some dynamically obtained UIColor>

// Workaround to properly set the UIBarButtonItem's tint color in iOS 4
for (UIBarButtonItem * item in toolbar.items)
{
    item.style = UIBarButtonItemStylePlain;
    item.style = UIBarButtonItemStyleBordered;
}

С уважением, Рула.

10
ответ дан 1 December 2019 в 19:49
поделиться
Другие вопросы по тегам:

Похожие вопросы: