NSImageView ClipsToBounds

4

我有一个使用以下代码的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)
3个回答

1
你应该展示你的Cocoa代码以及你尝试过的内容。
无论如何,Cocoa视图默认剪裁到它们的边界。如果你不想对图片进行缩放,将imageScaling属性设置为NSImageScaleNone即可。

在iPad/iPhone上,ImageView的图像被裁剪了,但在Mac上,图像的宽度/高度是正确的,但显示了完整的图像。我应该使用其他东西吗?我以为这就是clipsToBounds - Tom Coomer
似乎正在剪裁图像,但它不是正确的尺寸。我希望图像适应ImageView框架的最大边,然后剪裁其他部分。例如,一个宽短的图像将适合宽度,但剪裁顶部和底部。 - Tom Coomer

0

我成功地使用下面的代码创建了这个效果。

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

0

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

view.layer.masksToBounds = true

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接