2012-01-06 3 views
5

UIStepper очень удобен, но я хочу изменить его внешний вид, мне нужно настроить значок не как плюс и минус, а также изменить цвет элемента управления. Как я могу это достичь? Заранее спасибо!Изменить внешний вид UIStepper

+0

Это невозможно. Пожалуйста, укажите ошибку, запрашивающую эту функцию: https://bugreport.apple.com –

ответ

2

Вы не можете сейчас сделать это. Вам нужно будет написать собственный объект UIControl, если вы хотите настроить значки.

Из UIStepper Class Reference, единственные параметры, которые можно изменить в

continuous property 
    autorepeat property 
    wraps property 
    minimumValue property 
    maximumValue property 
    stepValue property 

    value property 

Вы не можете настроить иконки.

Однако, поскольку это подкласс UIView, вы можете попробовать изменить backgroundColor.

+0

Изменение 'backgroundColor' не будет работать из-за решений о том, как был реализован« UIStepper ». Вопрос должен содержать ошибку: https://bugreport.apple.com –

+0

Я вижу, что отстой, в любом случае есть альтернатива с открытым исходным кодом? спасибо за ответ, кстати. –

5

Это работает:

[[UIButton appearanceWhenContainedIn:[UIStepper class], nil] setBackgroundImage:[UIImage imageNamed:@"normal.png"] forState:UIControlStateNormal]; 
[[UIButton appearanceWhenContainedIn:[UIStepper class], nil] setBackgroundImage:[UIImage imageNamed:@"highlighted.png"] forState:UIControlStateHighlighted]; 
[[UIButton appearanceWhenContainedIn:[UIStepper class], nil] setBackgroundImage:[UIImage imageNamed:@"disabled.png"] forState:UIControlStateDisabled]; 

Не знаю, как будущее доказательство это все же.

+0

Хорошая находка. Любой способ установить разные изображения для левого и правого элементов управления? – tagyro

+0

@AndreiStoleru Я предполагаю, что вы нацеливаетесь на ios5 и означают образы + увеличения и уменьшения. Не без подклассификации или добавления категории в UIStepper. Но вы можете настроить разделитель с помощью [[UIImageView появлениеWhenContainedIn: [UIStepper class], nil] setImage: [UIImage imageNamed: @ "divider.png"]]; – Timmehmainframe

+0

'появлениеWhenContainedIn' устарело в iOS 9, и оно больше не рекомендуется для использования, в случае, если сюда придут люди из будущего. – hvaughan3

13

Начиная с iOS 6.0 вы можете использовать - (UIImage *)decrementImageForState:(UIControlState)state и - (UIImage *)incrementImageForState:(UIControlState)state, чтобы изменить метки на элементе управления UIStepper.

Это работает для прошивки 6.0:

[_stepper setDecrementImage:[UIImage imageNamed:@"decrementIcon.png"] forState:UIControlStateNormal];

+1

Работает отлично. Это должен быть принятый ответ, если на iOS> = 6. –

0

Вы всегда можете пошагово UIViews и догадаться, тоже. Во всяком случае, это мой код, который не отвечает на вопрос напрямую, но является своего рода аккуратным.

@implementation UIStepper (Util) 

- (void) fixForIos7 { 
    if (!IS_IOS7) 
     return; 
    for (UIView *view in self.subviews) { 
     view.backgroundColor = [UIColor whiteColor]; 
     UIButton *button = (UIButton*)view; 
     [button setTintColor:[UIColor blackColor]]; 
    } 
} 

@end 
2

Вот решение, которое работает для меня.

платформы IOS, 7,1

[stepper setBackgroundImage:[UIImage new] forState:UIControlStateNormal]; 
[stepper setDividerImage:[UIImage new] forLeftSegmentState:UIControlStateNormal rightSegmentState:UIControlStateNormal]; 

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

Смежные вопросы