在iPhone中调整分段控制的高度

时间:2009-06-08 09:49:02

标签: iphone

我想知道是否有任何方法可以更改分段控件的高度,或者更改控件的字体大小?

感谢。

8 个答案:

答案 0 :(得分:8)

您只能从代码中执行此操作,而不能在InterfaceBuilder中执行此操作。 IB试图保持在Apple's HIG范围内,这就是为什么它不允许改变高度。

如果以编程方式更改高度(帧),则还必须使用setImage更改图像:forSegmentAtIndex:因为拉伸时默认图像看起来很糟糕。

答案 1 :(得分:8)

我知道这是一个旧的,已经回答了,但是对于其他搜索;

我发现在IB中的属性中将样式更改为BAR是一种非常快速且可接受的解决方法,它使用更短的图形。

答案 2 :(得分:1)

当我尝试它时,我无法直接指定高度。我不得不这样做:

- (void)adjustSegControlHeight:(UISegmentedControl*)segControl :(NSInteger)newHeight {

        CGRect segControlFrame = segControl.frame;
        segControlFrame.size.height = newHeight;
        segControl.frame = segControlFrame;
}

但无论如何我决定使用BAR方法。

答案 3 :(得分:1)

我知道这是一篇较老的帖子,但是如果有人在那里仍然试图解决这个问题,那么这就是我以前的做法。希望对有需要的人有所帮助。

UISegmentedControl *customeSegment = [[UISegmentedControl alloc] initWithFrame:CGRectMake( 206.0f, 7.0f , 110.0f, 30.0f)];

答案 4 :(得分:1)

幸运的是,你也可以改变xib的高度。

您也可以通过xib完成此操作。只需将段控件添加到xib即可。然后在TextEdit中打开xib。在那里你会找到代码

<segmentedControl opaque="NO" contentMode="scaleToFill" fixedFrame="YES" contentHorizontalAlignment="left" contentVerticalAlignment="top" segmentControlStyle="plain" selectedSegmentIndex="0" translatesAutoresizingMaskIntoConstraints="NO" id="B99-Tt-vJG">

<rect key="frame" x="222" y="82" width="123" height="44"/>

在这里,您可以将高度从44更改为任何所需高度。您可以像这样更改任何UIConponent的高度。即使是UIPickerView

答案 5 :(得分:0)

现在有一种方法可以在界面构建器中执行此操作,以防有人偶然发现此问题。

1:点击IB中的分段控件 2:在网格视图中找到右下角的“pin”控件。 3:点击“pin height” 4:打开实用程序区域中的大小检查器(现在您将有一个高度约束) 5:单击齿轮并选择“选择并编辑”

非常黑客但如果你不能通过代码更新它,这将有效。

答案 6 :(得分:0)

使用AutoLayout在iOS 7+中执行此操作的方法只是为分段控件添加高度约束,然后更新帧以解决自动布局问题。然后,IB将在所需高度显示布局。然后可以编辑高度约束以随时改变IB的高度。

答案 7 :(得分:0)

这对我来说非常合适。它已针对新的iOS和Xcode版本进行了更新。

NSLayoutConstraint *constraint = [NSLayoutConstraint constraintWithItem:yoursegmentedControl
                                                              attribute:NSLayoutAttributeHeight
                                                              relatedBy:NSLayoutRelationEqual
                                                                 toItem:nil
                                                              attribute:NSLayoutAttributeNotAnAttribute
                                                             multiplier:1
                                                               constant:THE NEW HEIGHT];
[yoursegmentedControl addConstraint:constraint];