Этот меня поставил в тупик.
Можно ли вообще изменить цвет фона UIButton в Какао для iPhone. Я пробовал установить цвет фона, но он меняет только углы. setBackgroundColor:
кажется, единственный доступный метод для таких вещей.
[random setBackgroundColor:[UIColor blueColor]];
[random.titleLabel setBackgroundColor:[UIColor blueColor]];
objective-c
iphone
cocoa-touch
uibutton
дуббит
источник
источник
Ответы:
Это можно сделать программно, сделав реплику:
изменить: конечно, вам придется
#import <QuartzCore/QuartzCore.h>
edit: всем новым читателям вы должны также рассмотреть несколько добавленных опций как «еще одну возможность». для вашего рассмотрения.
Поскольку это старый ответ, я настоятельно рекомендую прочитать комментарии для устранения неполадок.
источник
У меня другой подход,
Из CommonUIUtility,
Не забывай
#import <QuartzCore/QuartzCore.h>
источник
btFind.layer.borderWidth = 1;
setBackgroundColor:(UIColor *) forState:(UIControlState)
.Полагаю, вы говорите о UIButton с
UIButtonTypeRoundedRect
? Вы не можете изменить цвет фона. Когда вы пытаетесь изменить цвет фона, вы скорее меняете цвет прямоугольника, на котором нарисована кнопка (который обычно ясен). Итак, есть два пути. Либо вы создаете подкласс UIButton и перезаписываете его-drawRect:
метод, либо создаете изображения для различных состояний кнопки (что вполне нормально).Если вы установите фоновые изображения в Interface Builder, вы должны заметить, что IB не поддерживает установку изображений для всех состояний, которые может иметь кнопка, поэтому я рекомендую установить изображения в коде следующим образом:
В последней строке показано, как установить изображение для выбранного и выделенного состояния (это то, что IB не может установить). Вам не нужны выбранные изображения (строки 4 и 6), если вашей кнопке не нужно выбранное состояние.
источник
CGContextSetFillColorWithColor
иCGContextFillPath
для заполнения нарисованного путиCGContextAddArcToPoint
.forState:(UIControlStateHighlighted | UIControlStateSelected)
Ура.Другая возможность:
Однако кнопка квадратная, а это не то, что нам нужно. Создайте IBOutlet со ссылкой на эту кнопку и добавьте следующее в метод viewDidLoad:
Не забудьте импортировать QuartzCore.h
источник
Подкласс UIButton и переопределите методы setHighlighted и setSelected
Мой метод darkerShade находится в такой категории UIColor
источник
Если вы не хотите использовать изображения и хотите, чтобы они выглядели точно так же, как стиль Rounded Rect, попробуйте это. Просто поместите UIView поверх UIButton с идентичной рамкой и маской автоматического изменения размера, установите альфа-канал на 0,3 и установите цвет фона. Затем используйте приведенный ниже фрагмент, чтобы вырезать закругленные края цветного наложения. Кроме того, снимите флажок «Взаимодействие с пользователем включено» в IB в UIView, чтобы разрешить событиям касания каскадно переходить в UIButton внизу.
Одним из побочных эффектов является то, что ваш текст также будет раскрашен.
источник
Другой вариант (лучший и самый красивый imho):
Создайте UISegmentedControl с 2 сегментами требуемого цвета фона в Интерфейсном Разработчике. Установите тип "бар". Затем измените его на один сегмент. Конструктор интерфейсов не принимает один сегмент, поэтому вам придется делать это программно.
Поэтому создайте IBOutlet для этой кнопки и добавьте его в viewDidLoad вашего представления:
Теперь у вас есть красивая глянцевая цветная кнопка с заданным цветом фона. Для действий используйте событие «значение изменено».
(Я нашел это на http://chris-software.com/index.php/2009/05/13/creating-a-nice-glass-buttons/ ). Спасибо, Крис!
источник
Что ж, я на 99% уверен, что вы не можете просто пойти и изменить цвет фона UIButton. Вместо этого вы должны пойти и самостоятельно изменить фоновые изображения, что, на мой взгляд, является проблемой. Я удивлен, что мне пришлось это сделать.
Если я ошибаюсь или есть лучший способ без установки фоновых изображений, дайте мне знать
источник
Согласно предложению @EthanB и @karim, создающему прямоугольник с обратной заливкой, я просто создал категорию для UIButton, чтобы добиться этого.
Просто введите код категории: https://github.com/zmonteca/UIButton-PLColor
Использование:
Необязательно использовать forStates:
источник
Вы также можете добавить CALayer к кнопке - вы можете делать с ними много вещей, включая наложение цвета, в этом примере используется простой цветной слой, вы также можете легко градуировать цвет. Имейте в виду, что добавленные слои закрывают нижние слои.
источник
добавьте вторую цель для
UIButton
forUIControlEventTouched
и изменитеUIButton
цвет фона. Затем верните его вUIControlEventTouchUpInside
цель;источник
Для профессиональных и красивых кнопок вы можете проверить этот компонент настраиваемой кнопки . Вы можете использовать его непосредственно в ваших представлениях и таблицах или изменить исходный код, чтобы он соответствовал вашим потребностям. Надеюсь это поможет.
источник
Это не так элегантно, как подкласс UIButton, однако если вам просто нужно что-то быстрое - я создал настраиваемую кнопку, затем изображение размером 1 на 1 пиксель с цветом, который я хотел бы, чтобы кнопка была, и установил фон кнопки к этому изображению для выделенного состояния - работает для моих нужд.
источник
Я знаю, что об этом спрашивали давно, и теперь есть новая UIButtonTypeSystem. Но новые вопросы помечаются как дубликаты этого вопроса, поэтому вот мой новый ответ в контексте системной кнопки iOS 7, используйте
.tintColor
свойство.источник
[myButton setBackgroundColor:[UIColor blueColor]]; [myButton setTitleColor:[UIColor whiteColor] forState:UIControlStateNormal];
Можно изменить этот способ или перейти на раскадровку и изменить фон в параметрах справа.
источник
Swift 3:
источник