我很难在UISegmentedControl上制作图像,保持宽高比而不是向所有方面缩放。 这是它的样子:
图像是100X100(除了6号将很快更换),我希望它们保持宽高比。
我试过了:
self.segment.contentMode = .ScaleAspectFit
//and:
self.segment.contentMode = UIViewContentMode.Center
有没有办法可以在细分中定位UIImageView ..这样我可以设置contentMode..right吗?还是有另一种方法吗?
由于
答案 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。编码愉快。
它是高度可定制的,易于使用的,而且还支持图像。