Как установить цвет UIButton внутри (не цвет фона) - PullRequest
7 голосов
/ 22 января 2011

Я настраиваю некоторые визуальные изменения и заметил, что когда я пытаюсь установить цвет фона UIButton, он только устанавливает цвет вне фактической кнопки (не внутри самой кнопки)

UIButton* button = [UIButton buttonWithType:UIButtonTypeRoundedRect];
button.frame = CGRectMake(6, 9, 50, 25);    
[button setTitle:@"Select" forState:UIControlStateNormal];
button.backgroundColor = [UIColor redColor]; 

Существует ли другое свойство, которое позволило бы мне установить цвет?

Ответы [ 4 ]

11 голосов
/ 23 ноября 2011

colored UIButton

Если вы не хотите использовать изображения и хотите, чтобы они выглядели в точности как стиль Rounded Rect, попробуйте это.Просто поместите UIView поверх UIButton с идентичной рамкой и маской автоматического изменения размера, установите альфа на 0,3 и установите цвет фона.Затем используйте фрагмент ниже, чтобы обрезать закругленные края от цветного наложения.Кроме того, снимите флажок «Взаимодействие с пользователем включено» в IB на UIView, чтобы разрешить каскадным событиям каскадно опускаться до UIButton внизу.

Одним из побочных эффектов является то, что ваш текст также будет раскрашен.

#import <QuartzCore/QuartzCore.h>

colorizeOverlayView.layer.cornerRadius = 10.0f;
colorizeOverlayView.layer.masksToBounds = YES;
3 голосов
/ 28 марта 2013

для ксамарина

var addNote = new UIButton(UIButtonType.Custom);
        //addNote.SetImage(new UIImage("Images/11-x.png"), UIControlState.Normal);
        addNote.SetTitle("Add Note", UIControlState.Normal);
        addNote.Frame = new RectangleF(0, 0, 130, 30);
        addNote.SetTitleColor(UIColor.Blue, UIControlState.Normal);
        addNote.BackgroundColor = UIColor.LightGray;
        addNote.Layer.CornerRadius = 10f;
        addNote.Layer.BorderColor = new MonoTouch.CoreGraphics.CGColor(0f, 100f, 0f);
        addNote.Layer.BorderWidth = 2f;
        addNote.TouchUpInside += delegate
        {
            AddNote();
        };
2 голосов
/ 27 марта 2013

Я только что нашел решение, которое отлично работает, и я понятия не имею, почему.

Если вы выберете кнопку в Интерфейсном Разработчике и откроете «Инспектор идентификации», вы можете добавить «Определенные пользователем атрибуты времени выполнения»».Если вы добавите ключ «self.fillColor» с типом цвета, этот цвет будет использоваться в качестве цвета заливки для кнопки.

Я обнаружил это чисто случайно.У меня был собственный подкласс UIButton под названием ColoredButton, где я рисовал скругленный прямоугольник и заполнял его сам.Он использовал свойство fillColor.Я изменил один из своих объектов ColoredButton обратно на UIButton, чтобы что-то проверить, и с удивлением обнаружил, что он все еще заполнен цветом.

Я не знаю, почему он работает, но он работает.

0 голосов
/ 22 января 2011

Использование setImage:forState:

- (void)setImage:(UIImage *)image forState:(UIControlState)state

Кроме того, не забудьте создать кнопку с [UIButton buttonWithType:UIButtonTypeCustom]

...