【问题标题】:Padding around UIImageView. Swift 3UIImageView 周围的填充。斯威夫特 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

标签: swift uiimageview


【解决方案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)
            }
        }
        

        【讨论】:

          猜你喜欢
          • 2017-03-24
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2017-02-15
          • 1970-01-01
          • 2017-07-22
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多