如何在iOS 7上防止UISegmentedControl缩放分段图像

4
我有一个尺寸为100x42的UISegmentedControl, 我已经设置了三个带有尺寸26x26的图像和4x42的分割线图像。这三个段落图像应该适合于各自的段落,但它们被缩放并且只在水平方向上缩小以适应段落长度,这样失去了比例。
这个问题是在我更换到Xcode 5和iOS7 SDK后出现的。在那之前,段落图像以正确的比例和原始大小显示。 我没有使用界面构建器。我已经尝试手动设置段落大小并将分段控件的 contentMode 设置为 UIViewContentModeScaleAspectFill 但是没有帮助。
是否有任何方法可以强制 UISegmentedControl 简单地呈现图像本身?

2个回答

0

我知道这是一个晚回答,但我在测试一个IOS 7.1应用程序时遇到了同样的问题。

如果你在代码中设置图像,它会正常工作。例如:

- (void)viewDidLoad {
  [super viewDidLoad];
  [_segmentedControl setImage:[UIImage imageNamed:@"779-users-toolbar"] forSegmentAtIndex:0];
}

在我的项目中,我有普通图像以及@2x和@3x版本的图像。
我在7.1、Xcode 6.1中测试了代码。
当我在8.1中运行它时,通过IB设置的图像也能正常工作,因此这可能是7.1中已经修复的错误。

0

您可以设置自动布局约束来正确定义UISegmentedControl框架。就像这样

enter image description here


谢谢您的建议。不幸的是,正如我所说,我没有使用界面构建器。我从未使用过自动布局约束。我会研究一下这个。您不会碰巧知道如何以编程方式完成这个吗? - Matti Jokipii
是的,就像这样我的约束 = [NSLayoutConstraint constraintWithItem:mybutton attribute:NSLayoutAttributeTrailing relatedBy:NSLayoutRelationEqual toItem:mylabel attribute:NSLayoutAttributeLeading multiplier:1 constant: -10]; [父视图addConstraint:myConstraint]; - nerowolfe
分段控件本身的大小是正确的。只有段图像会被缩放。我不明白NSLayoutConstraint如何影响段图像的缩放?它会吗?还是你的自动布局解决方案只是用来帮助调整整个UISegmentedControl的大小? - Matti Jokipii
我认为你可以只需在图标周围留更多的空白来解决这个问题。 - nerowolfe
哦,糟糕。我想我会自己制作分段控件,并一劳永逸地解决这些问题。感谢您的帮助。 - Matti Jokipii

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接