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

Posted

技术标签:

【中文标题】UIImageView 周围的填充。斯威夫特 3【英文标题】:Padding around UIImageView. Swift 3 【发布时间】:2017-05-28 19:04:04 【问题描述】:

我有一个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

非常感谢。

【问题讨论】:

layoutMargins 只影响使用它们的子视图。 UIImageView 以非 UIView 的方式在内部呈现图像,因此您应该按照下面的答案将其包装到 UIView 访问***.com/questions/46437504/… 【参考方案1】:

Swift 4.2 & 5

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

插图应为负值

【讨论】:

【参考方案2】:

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

【讨论】:

多米尼克。谢谢。我是初学者,怎么把imageView放到view中? 您可以选择 imageView 并转到菜单,Editor > Embed In > View。这样做,您的 imageView 将被分配到一个新创建的视图中。但不要忘记重新应用约束。【参考方案3】:

在新类中覆盖alignmentRectInsets 属性:

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

【讨论】:

【参考方案4】:
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)

【讨论】:

【参考方案5】:

Swift 5.4 和 Xcode 13

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

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

【讨论】:

以上是关于UIImageView 周围的填充。斯威夫特 3的主要内容,如果未能解决你的问题,请参考以下文章

UITableView - UITableViewCell.Style .subtitle - 如何使 UIImageView 循环? - 斯威夫特 5

Alamofire 字符 0 周围的值无效 |斯威夫特 4

iOS UIImageView 调整大小问题

在 UIImageView 上一致地居中 CALayer 子层

如何在 UIImage 数组中设置第二张或中间的图像? (斯威夫特 3)

如何以编程方式绘制边框并在 UIImageview 周围的文字后将其删除?