在 UIImageView 周围填充。斯威夫特 3

问题描述 投票:0回答:6

我有一个

UIImageView
,我不希望图像“接触”视图的边缘,而是在它周围有一些“填充”。但是,我尝试了以下方法,但由于某种原因它没有改变:

@IBOutlet weak var pictureOutletOne: UIImageView!

//set the image
pictureOutletOne.image = UIImage(named: itemOne)

//set the padding
pictureOutletOne.layoutMargins = UIEdgeInsetsMake(10, 10, 10, 10);

我也试过:

pictureOutletOne.translatesAutoresizingMaskIntoConstraints = false
pictureOutletOne.layoutMargins = UIEdgeInsets(top: 10, left: 100, bottom: 10, right: 0)

我已经阅读了很多关于此的内容,但这些是我找到的解决方案,但它们不起作用。使用

Swift 3
.

非常感谢。

swift uiimageview
6个回答
23
投票

斯威夫特 4.2 和 5

let imageView = UIImageView()
imageView.image = UIImage(named: 
"image")?.withAlignmentRectInsets(UIEdgeInsets(top: -5, left: -5, bottom: -5, 
right: -5))

Insets 应为负值


8
投票

您可以将 imageView 插入视图并为边设置约束,保证方法:)


6
投票

在新类中覆盖

alignmentRectInsets
属性:

class PaddedImageView: UIImageView {
    override var alignmentRectInsets: UIEdgeInsets {
        return UIEdgeInsets(top: -10, left: -10, bottom: -10, right: -10)
    }
}

2
投票

这是我构建的一个小助手扩展:

extension UIImage {
    func addPadding(_ padding: CGFloat) -> UIImage {
        let alignmentInset = UIEdgeInsets(top: -padding, left: -padding,
                                          bottom: -padding, right: -padding)
        return withAlignmentRectInsets(alignmentInset)
    }
}

0
投票
let padding: CGFloat = 10    
myImageView.contentMode = .scaleAspectFill
myImageView.image = UIImage(named: "myImage.png").resizableImage(withCapInsets: UIEdgeInsets(top: padding, left: padding, bottom: padding, right: padding), resizingMode: .stretch)

0
投票

斯威夫特 5

在图像视图中的图像位置的右侧和左侧添加填充。

        let image = UIImage(systemName: "circle.fill")
        let insets = UIEdgeInsets(top: 0, left: -15, bottom: 0, right: -15)
        let imageView = UIImageView(image: image.withAlignmentRectInsets(insets))
注意:UIStackView 尊重对齐插图作为图像视图的固有内容大小的贡献者。

用例示例:

在我的应用程序中,我有一个垂直堆叠,由一个小的居中对齐的

UILabel
堆叠在一个
UIImageView
中的一个
UITableViewCell
之上。标签宽度因单元格而异,不同的垂直堆栈宽度和移动图像的相应水平对齐方式。 IE。图像在表格中不对齐....通过使用水平对齐插图填充图像,它强制垂直堆栈具有大于最大预期标签宽度的一致宽度,从而使图像在表格中垂直居中对齐。

© www.soinside.com 2019 - 2024. All rights reserved.