【问题标题】:NSImageView ClipsToBoundsNSImageView ClipsToBounds
【发布时间】:2022-04-06 23:22:16
【问题描述】:

我有一个使用以下代码的 iOS 应用。我现在正在为 Mac OS X 创建应用程序并且想要相同的效果但是我似乎无法使用clipsToBounds。我应该使用什么? 我有其余的代码在 Mac 上工作,只是不是那部分。 谢谢

var myImage = UIImage()                   
let view = UIImageView(frame: CGRectMake(0, 0, 100, 100))               
view.contentMode = UIViewContentMode.ScaleAspectFill
view.layer.opacity = opacity
view.layer.cornerRadius = cornerRadius
view.clipsToBounds = true
view.image = self.myImage
self.mainView.addSubview(view)

【问题讨论】:

    标签: ios xcode macos nsimage nsimageview


    【解决方案1】:

    您应该展示您的 Cocoa 代码和您尝试过的内容。

    在任何情况下,Cocoa 都默认将视图剪辑到它们的边界。如果您不想缩放图像,请将imageScaling 属性设置为NSImageScaleNone

    【讨论】:

    • 在 iPad/iPhone 上,图像是从 ImageView 中剪裁出来的,但在 Mac 上,图像的宽度/高度是正确的,但会显示完整的图像。我应该使用别的东西吗?我以为这是clipsToBounds
    • 它似乎正在剪切图像,但它的大小不正确。我希望图像适合 ImageView 框架的最大边,然后剪辑其他边。例如。宽的短图像会适合宽度,但会剪裁顶部和底部。
    【解决方案2】:

    我设法使用下面的代码创建了效果。

    view.imageScaling = NSImageScaling.ImageScaleNone
    if view.frame.width > view.frame.height {
        var newWidthSum = self.getImage.size.width / widthPix
        var imageSize:NSSize = NSMakeSize(widthPix,self.getImage.size.height / newWidthSum)
        self.getImage.size = imageSize
    } else {
        var newHeightSum = self.getImage.size.height / heightPix
        var imageSize:NSSize = NSMakeSize(self.getImage.size.width / newHeightSum,heightPix)
        self.getImage.size = imageSize
    }
    view.image = self.getImage
    

    【讨论】:

      【解决方案3】:

      从 macOS 10.5 开始,您可以使用:

      view.layer.masksToBounds = true
      

      【讨论】:

        猜你喜欢
        • 2019-11-11
        • 2015-03-06
        • 1970-01-01
        • 2014-07-08
        • 2017-01-20
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多