Изменить внешний вид UIStepper - PullRequest
7 голосов
/ 06 января 2012

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

Ответы [ 6 ]

14 голосов
/ 23 октября 2012

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

Это работает для iOS 6.0:

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

5 голосов
/ 24 мая 2012

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

[[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];

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

2 голосов
/ 29 июля 2014

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

Платформа iOS 7.1

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

Результат - только приращение, уменьшенные изображения видны.

2 голосов
/ 06 января 2012

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

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

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

  value  property

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

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

0 голосов
/ 22 мая 2018

Вот версия Swift 4.0:

stepper.setDecrementImage(UIImage(named: "yourDecrementImage.png"), for: UIControlState.normal)
stepper.setIncrementImage(UIImage(named: "yourIncrementImage.png"), for: UIControlState.normal)

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

extension UIImage {
  func resize(targetSize: CGSize) -> UIImage {
        return UIGraphicsImageRenderer(size:targetSize).image { _ in
            self.draw(in: CGRect(origin: .zero, size: targetSize))
        }
    }
}
0 голосов
/ 16 сентября 2013

Вы всегда можете пройтись по 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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...