Изменение внешнего вида UIStepper

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

6 ответов


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

С Ссылка На Класс UIStepper, только параметры, которые можно изменить

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

  value  property

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

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


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

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

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


это работает:

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

Не уверен, что в будущем все же.


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

Платформа iOS 7.1

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

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


вы всегда можете пройти через 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

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

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

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

extension UIImage {
  func resize(targetSize: CGSize) -> UIImage {
        return UIGraphicsImageRenderer(size:targetSize).image { _ in
            self.draw(in: CGRect(origin: .zero, size: targetSize))
        }
    }
}