Изменить цвет фона кнопок UIActionSheet и шрифт кнопки

У меня есть UIActionSheet в моем приложении. Я хочу изменить цвет фона кнопок листа действий и шрифт кнопок. Я сделал поиск, найденный ниже кода:

for (UIView *_currentView in actionSheet.subviews)
        {
            if ([_currentView isKindOfClass:[UIButton class]])
            {
               //DO YOUR WORK
            }
        }

но этот код не работает на ios 8. для ios я тоже нашел код ниже:

 [[UIView appearanceWhenContainedIn:[UIAlertController class], nil] setTintColor:[UIColor redColor]];

но этот код только меняет цвет шрифта кнопки.

Есть ли способ изменить цвет фона кнопки?


person Husein Behboudi Rad    schedule 17.05.2015    source источник


Ответы (2)


По сути, то, что вы пытаетесь сделать, — это то, чего вы не должны делать и никогда не должны были делать. UIActionSheet и UIAlertController предоставляют стандартные представления с очень небольшим количеством вариантов и полностью стандартным внешним видом. Вы не должны пытаться возиться с этим.

Однако не теряйте надежды! Ничто не мешает вам разработать свое собственное представление, которое будет выглядеть так, как вы хотите. А в iOS 8 (и iOS 7) это очень просто, потому что вам разрешено создавать представленный контроллер представления, чье представление скользит по экрану и закрывает его лишь частично, точно так же, как лист предупреждений. Так что вперед и создавайте свой собственный нестандартный столбец кнопок, вместо того, чтобы пытаться модифицировать стандарт Apple.

person matt    schedule 17.05.2015
comment
не могли бы вы уточнить, как я могу это сделать: сделать представленный контроллер представления, представление которого скользит по экрану и покрывает его только частично, как лист предупреждений. - person Husein Behboudi Rad; 18.05.2015
comment
Это особенно просто в iOS 8, потому что, когда вы создаете представленный контроллер представления, вам разрешено указывать окончательный размер/положение представления, анимацию, с помощью которой оно появляется и исчезает, и должно ли отображаться какое-либо затемняющее представление за ним. Я демонстрирую здесь: github.com/mattneub/ custom-alert-view-iOS7/blob/master/ Это для пользовательского представления предупреждений, а не листа действий, но изменить пример, чтобы он был похож на лист действий, было бы очень просто. - person matt; 18.05.2015

Что работает для меня, так это:

UICollectionViewCell.appearance().backgroundColor = UIColor.whiteColor() // or any other color you want

Обратите внимание, что это влияет на фон при представлении во всплывающем окне или на iPhone. Если вы используете UICollectionView в другом месте своего приложения, установите цвет фона вручную, чтобы переопределить его.

person bio    schedule 26.05.2016