как изменить цвет uitabbar selection

<p>мне нужно изменить цвет выделения uitabbar с синего на красный по умолчанию. как нам это сделать.</p>

<p><strong>обновление от сентября 2017 года:</strong> прошло два года с тех пор, как я написал этот ответ, и поскольку он регулярно получает откаты, я должен сказать, что это, вероятно, худший из возможных ответов на этот вопрос, он подвержен ошибкам и может сломаться из-за обновлений ios, сложностей в отладке и т. д., поэтому, пожалуйста, не делайте того, что я написал, и применяйте более качественные решения, такие как uitabbar или uitabbarcontroller. благодарю. </p><p>вы можете сделать это, установив атрибут "tintcolor" (key path) для вашего uitabbar.</p><ol> <li>выберите uitabbar в структуре документа. (<strong>not</strong> контроллер с желтым значком.)</li> <li>выберите identity inspector в области utilities.</li> <li>нажмите «+» в «определенных пользователем атрибутах времени выполнения».</li> <li>добавьте «tintcolor» key path типа «color» и нужный вам цвет.</li> </ol><p>это должно сделать это. вы можете проверить это по скриншоту ниже.</p><p> <a href="https://i.stack.imgur.com/nhz9w.png"> <img src="https://i.stack.imgur.com/nhz9w.png" alt="enter image description here"> </a> </p><p><strong>подробнее об этом:</strong> есть атрибут «оттенок» в identity inspector uitabbar, который, как я полагал, будет делать то же самое, но, очевидно, он ничего не делает. его значение по умолчанию - это точный цвет заливки по умолчанию, когда выбран uitabbaritem, так что я думаю, это будет исправлено в стабильном выпуске xcode 7. пальцы скрещены.</p>

<p>в ios5 uitabbar имеет <a href="http://developer.apple.com/library/ios/documentation/uikit/reference/uitabbar\_class/reference/reference.html#//apple\_ref/occ/instp/uitabbar/selectedimagetintcolor">selectedimagetintcolor</a> свойство, которое делает то, что вам нужно.</p>

<p>в ios 7 это просто tintcolor. одним из способов сделать это может быть создание подкласса uitabbarviewcontroller, установка пользовательского класса в раскадровке, а в вашем методе <code>viewdidload</code> подкласса tabbarvc добавьте следующее:</p><pre><code>[[self tabbar] settintcolor:[uicolor redcolor]]; </code></pre>

<p>это очень легко</p><p>создайте пользовательский класс<strong> uitabbarcontroller </strong>и в методе <code>-(void)viewdidload</code> добавьте следующую строку:</p><pre><code>[[self tabbar] setselectedimagetintcolor:[uicolor greencolor]]; </code></pre>

<p>поскольку uitextattributetextcolor устарела в ios 7, вы должны использовать: </p><pre><code>[uitabbaritem.appearance settitletextattributes:@{nsforegroundcolorattributename : [uicolor greencolor]} forstate:uicontrolstatenormal]; [uitabbaritem.appearance settitletextattributes:@{nsforegroundcolorattributename : [uicolor purplecolor]} forstate:uicontrolstateselected]; </code></pre>

<p> <a href="https://i.stack.imgur.com/jluyq.jpg"> <img src="https://i.stack.imgur.com/jluyq.jpg" alt="enter image description here"> </a> </p><p>для достижения вышеуказанного результата выполните следующие действия.</p><p><strong>шаг 1:</strong> добавьте нужные изображения в <code>assets.xcassets</code> и убедитесь, что они <code>render as</code>: <code>default</code></p><p> <a href="https://i.stack.imgur.com/m7lhk.png"> <img src="https://i.stack.imgur.com/m7lhk.png" alt="enter image description here"> </a> </p><p><strong>шаг 2:</strong> выберите объект <code>uitabbar</code> и установите цвет <code>image tint</code>, этот цвет будет выбран цветом вкладки</p><p> <a href="https://i.stack.imgur.com/pqsjn.png"> <img src="https://i.stack.imgur.com/pqsjn.png" alt="enter image description here"> </a> </p><p><strong>шаг 3:</strong> выберите объект <code>uitabbar</code> и добавьте <strong>key path</strong>: <code>unselecteditemtintcolor</code>, <strong>type</strong>: <code>color</code>, <strong>value</strong>: <code>choose color for unselected item</code> in <strong>определенные пользователем атрибуты времени выполнения</strong>.</p><p> <a href="https://i.stack.imgur.com/fw0xr.png"> <img src="https://i.stack.imgur.com/fw0xr.png" alt="enter image description here"> </a> </p><p>все сделано.</p>

<p>просто измените следующее свойство в интерфейсном разработчике для tabbar</p><p><img src="https://i.stack.imgur.com/6q28q.png" alt=""></p><p>очевидно, в моем случае это белый.</p>

<p>sdk не делает это простым, но это<em> технически </em>возможно. apple, по-видимому, считает, что это является частью их видения последовательного внешнего вида.</p><p>uitabbar является подклассом uiview. вы всегда можете создать подкласс и реализовать свой собственный <code>-drawrect:</code></p><p>это не тривиальная задача, однако вы должны по существу заново реализовать класс с нуля, иначе вы рискуете получить некоторые странные побочные эффекты. </p>

<p>я искал способ установить выбранный цвет текста uitabbaritem и нашел очень простой метод, используя протокол uiappearance.</p><pre><code>[uitabbaritem.appearance settitletextattributes:@{ uitextattributetextcolor : [uicolor greencolor] } forstate:uicontrolstatenormal]; [uitabbaritem.appearance settitletextattributes:@{ uitextattributetextcolor : [uicolor purplecolor] } forstate:uicontrolstateselected]; </code></pre><p>пожалуйста, извините за ужасные цвета!</p>

<p>начиная с ios 8 это так просто, как:</p><pre><code>uitabbar.appearance().tintcolor = uicolor.redcolor() </code></pre>

<p>ios 5.0 исправляет эту проблему, но решение находится под nda. посмотрите uitabbar в своей документации, чтобы получить легкий способ сделать то, что вы хотите сделать.</p>

<p>я нашел самое простое решение - </p><ol> <li><p>выберите панель вкладок в контроллере панели вкладок </p></li> <li><p>установить цвет оттенка изображения </p></li> <li><p>установить оттенок цвета </p></li> </ol><p>для справки смотрите прикрепленное изображение.</p><p> <a href="https://i.stack.imgur.com/sqpav.jpg"> <img src="https://i.stack.imgur.com/sqpav.jpg" alt="enter image description here"> </a> </p>