Изменение размера UIStepper

Кажется, я не могу изменить размер UIStepper:

  1. В IB поля «Ширина» и «Высота» неактивны.
  2. Я использовал initWithFrame:

    UIStepper *stepper = [[UIStepper alloc] initWithFrame:CGRectMake(300, 638, 120, 80)];

    Но это не меняет размер. Несколько сообщений на SO, казалось, подразумевали, что это изменчиво. Любое предложение?


person user523234    schedule 29.08.2012    source источник


Ответы (6)


из документа:

Ограничивающий прямоугольник для степпера совпадает с прямоугольником объекта UISwitch.

Не звучит, как будто это возможно заранее.

Также в этом сообщении блога:

// Frame defines location, size values are ignored
UIStepper *stepper = [[UIStepper alloc] initWithFrame:CGRectMake(120, 20, 0, 0)]; 

Но вы можете попробовать преобразовать его слой.

person vikingosegundo    schedule 29.08.2012

Вы можете правильно обновить размер UIStepper без преобразования.

Используйте следующий метод, чтобы установить фоновое изображение, и степпер будет рисовать себя, используя размер фона:

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

Пример

    [self.stepper1 setIncrementImage:[UIImage imageNamed:@"plusIcon1.png"] forState:UIControlStateNormal];
    [self.stepper1 setDecrementImage:[UIImage imageNamed:@"minusIcon1.png"] forState:UIControlStateNormal];

    [self.stepper1 setBackgroundImage:[UIImage imageNamed:@"stepperBkg1.png"] forState:UIControlStateNormal];
    [self.stepper1 setBackgroundImage:[UIImage imageNamed:@"stepperBkgHighlighted1.png"] forState:UIControlStateHighlighted];
    [self.stepper1 setBackgroundImage:[UIImage imageNamed:@"stepperBkgDisabled1.png"] forState:UIControlStateDisabled];

Это дает следующий результат слева по сравнению с немодифицированным степпером справа: введите здесь описание изображения

[email protected]:

введите здесь описание изображения

[email protected]:

введите здесь описание изображения

person Brody Robertson    schedule 11.02.2015
comment
Важным моментом здесь является то, что фоновое изображение — это то, что устанавливает размер UIStepper. - person jollyr0ger; 20.11.2015

Я попробовал преобразовать свой степпер - он изменил внешний вид и масштабировал его, однако изображения + и - были растянуты (поэтому вам нужно масштабировать пропорционально исходному степперу.

Кроме того, будьте осторожны, потому что область касания, которая на самом деле увеличивается и уменьшается, действительно меняется - поэтому на растянутом изображении кнопка не будет уменьшаться по всему виду - так что это, вероятно, не очень хорошее решение....

person MplsRich    schedule 08.05.2013

Вы можете доказуемо масштабировать его:

stepper.transform = CGAffineTransformMakeScale(1.75, 1.0);
person k20    schedule 05.02.2013

Я сделал для него небольшой пользовательский класс UIStepper. Никаких изображений не требуется, никаких преобразований не требуется. Изображения генерируются автоматически. https://github.com/alelipona/VZCustomSizeStepper введите здесь описание изображения

person Vyacheslav Zubenko    schedule 26.11.2016

Да, вы можете изменить размер шагового двигателя.

сначала щелкните правой кнопкой мыши на раскадровке --> выберите (открыть как) --> выберите (исходный код)

затем найдите степпер в коде --> найдите ширину=??? и изменить.

затем снова нажмите на раскадровку и выберите «Открыть как конструктор интерфейса».

person Farhad    schedule 30.11.2014