更改UIStepper的大小

时间:2012-08-29 14:23:35

标签: objective-c ios cocoa-touch uistepper

我似乎无法更改UIStepper的大小:

  1. 在IB中,“宽度”和“高度”框显示为灰色。
  2. 我使用initWithFrame

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

    但它不会改变大小。关于SO的几个帖子似乎暗示它是可变的。有什么建议吗?

7 个答案:

答案 0 :(得分:5)

您无需转换即可正确更新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];

与右侧未修改的步进器相比,左侧产生以下结果: enter image description here

stepperBkg1@2x.png:

enter image description here

stepperBkgHighlighted1@2x.png:

enter image description here

答案 1 :(得分:4)

UIStepper* s = [UIStepper alloc] init];  
s.transform = CGAffineTransformMakeScale(0.75, 0.75);

答案 2 :(得分:3)

我在我的步进器上尝试了变换 - 它确实改变了外观并进行了缩放,然而,+和 - 的图像被拉伸(因此你必须按照原始步进器的比例进行缩放。

另外,要小心,因为实际增加和减少的触摸区域确实会发生变化 - 所以在拉伸的图像上,按钮不会沿着整个视图递减 - 所以这可能不是一个好的解决方案...... / p>

答案 3 :(得分:1)

来自doc:

  

步进器的边界矩形与UISwitch对象的边界矩形匹配。

听起来不像前面那样可能。

同样在此blog post

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

但你可以尝试transform it's layer

答案 4 :(得分:0)

您可以证明它可以扩展:

stepper.transform = CGAffineTransformMakeScale(1.75, 1.0);

答案 5 :(得分:0)

我为它制作了一个小的自定义UIStepper类。无需图像,无需转换。图像自动生成。 https://github.com/alelipona/VZCustomSizeStepper enter image description here

答案 6 :(得分:-1)

是的,您可以更改步进器的大小。

首先,右键单击storyboard - >选择(打开为) - >选择(源代码)

然后在代码中找到stepper - >找宽度= ???并改变。

然后再次单击storyboard并选择open as interface builder。