UISegmentedControl维护图像的宽高比

时间:2016-08-13 20:19:05

标签: ios swift uiimageview uiimage uisegmentedcontrol

我很难在UISegmentedControl上制作图像,保持宽高比而不是向所有方面缩放。 这是它的样子: UiSegmentedControl maintain aspect ratio

图像是100X100(除了6号将很快更换),我希望它们保持宽高比。

我试过了:

self.segment.contentMode = .ScaleAspectFit
//and:
self.segment.contentMode = UIViewContentMode.Center

有没有办法可以在细分中定位UIImageView ..这样我可以设置contentMode..right吗?还是有另一种方法吗?

由于

4 个答案:

答案 0 :(得分:4)

segmentedControl.subviews.flatMap{$0.subviews}.forEach { subview in
    if let imageView = subview as? UIImageView, let image = imageView.image, image.size.width > 5 {
        // The imageView which isn't separator
        imageView.contentMode = .scaleAspectFit
    }
}

答案 1 :(得分:1)

实际上,有一个很棒的通用解决方案:

UIImageView.appearance(whenContainedInInstancesOf: [UISegmentedControl.self]).contentMode = .scaleAspectFit

这使用此处描述的方法:UIImageView.appearance is overriding UISegmentedControl.appearance

就我而言,我将其限制为UISegmentedControl的子类(以防在其他情况下需要默认的AspectFill)。

答案 2 :(得分:0)

我没有找到如何将contentMode设置为ScaleAspectFit,但是在设置图像时可以使用以下代码在图像周围设置边距:

ERROR 20:52:44 Unable to verify sstable files on disk

您可以更改" top"," left"," bottom"的值和"对"如你所愿。 这对我有用,我希望它会有所帮助!

答案 3 :(得分:0)

这可能为时已晚,但我确定它将对某人有所帮助。

我的问题1 : 分段控件中的图像比例失真。

我的问题2 : 您甚至无法更改图像的颜色。它保持黑色。即使您使用.alwaysTemplate和imageview色调颜色。它不会让步。

解决方案: 无需尝试破解SDK,或通过非官方手段实现目标。 Apple可以轻松更改SegmentedControl,您的所有工作都会变得多余。 改用它:BetterSegmentedControl。编码愉快。

它是高度可定制的,易于使用的,而且还支持图像。