UISegmentedControl 保持图像的纵横比

Sta*_*ord 6 uisegmentedcontrol uiimageview uiimage ios swift

我很难在 UISegmentedControl 上制作图像保持它们的纵横比而不是向所有方向缩放。这是它的样子: UiSegmentedControl 保持纵横比

图像是 100X100(除了即将更换的 nr 6),我希望它们保持纵横比。

我试过了:

self.segment.contentMode = .ScaleAspectFit
//and:
self.segment.contentMode = UIViewContentMode.Center
Run Code Online (Sandbox Code Playgroud)

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

谢谢

小智 5

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
    }
}
Run Code Online (Sandbox Code Playgroud)


AW5*_*AW5 0

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

yourSegmentedControl.setImage(yourImage.resizableImage(withCapInsets: .init(top: 0, left: 10, bottom: 0, right: 10), resizingMode: .stretch), forSegmentAt: 0)
Run Code Online (Sandbox Code Playgroud)

您可以根据需要更改“顶部”、“左侧”、“底部”和“右侧”的值。这对我有用,我希望它会有所帮助!