【问题标题】:How to prevent UISegmentedControl from scaling segment images on iOS 7如何防止 UISegmentedControl 在 iOS 7 上缩放分段图像
【发布时间】:2016-12-21 23:23:32
【问题描述】:

我有一个UISegmentedControl,边界为 100x42。我用 26x26 图像和 4x42 分隔器图像设置了三个段。 三段图像应该适合各个段,但它们被缩放,更糟糕的是它们似乎垂直适合并且仅水平缩小,因此失去比例。

这个问题是在我改用 Xcode 5 和 iOS 7 SDK 之后出现的。在此之前,片段图像以正确的比例和原始大小显示。

我没有使用界面生成器。我尝试手动设置分段大小并将分段控件的contentMode 设置为UIViewContentModeScaleAspectFill,而无需帮助。

有什么方法可以强制UISegmentedControl 简单地呈现图像吗?

【问题讨论】:

标签: ios7 uiimage xcode5 scale uisegmentedcontrol


【解决方案1】:

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

【讨论】:

  • 感谢您的建议。不幸的是,正如我所说,我没有使用界面生成器。我从未使用过自动布局约束。我会调查一下。您不会碰巧知道这是如何以编程方式完成的吗?
  • 是的,类似这样 myConstraint = [NSLayoutConstraint constraintWithItem:mybutton attribute:NSLayoutAttributeTrailing relatedBy:NSLayoutRelationEqual toItem:mylabel attribute:NSLayoutAttributeLeading multiplier:1 constant:-10]; [superview addConstraint:myConstraint];
  • 分段控件本身的大小正确。只有分段图像会被缩放。我不明白 NSLayoutConstraint 会如何影响分段图像的缩放?可以?还是您的自动布局解决方案仅用于帮助调整整个 UISegmentedControl 的大小?
  • 我认为您可能只会让您的图像在图标本身周围留出更多空白空间来解决问题
  • 哦,真可惜。我想我会推出自己的分段控制并永远解决这些问题。感谢您的帮助。
【解决方案2】:

我知道这是一个迟到的答案,但我在为 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 中的错误,已在 8 中修复。

【讨论】:

    猜你喜欢
    • 2011-06-21
    • 1970-01-01
    • 1970-01-01
    • 2020-12-06
    • 1970-01-01
    • 1970-01-01
    • 2012-08-29
    • 1970-01-01
    相关资源
    最近更新 更多