gpt4 book ai didi

ios - 如何防止剪裁 UIImageView 蒙版

转载 作者:塔克拉玛干 更新时间:2023-11-02 08:32:52 24 4
gpt4 key购买 nike

我想将聊天气泡蒙版应用于 ImageView ,我希望蒙版图像能够缩放以适合 ImageView 的框架。这是我用来创建和应用 mask 的代码:

let mask = CALayer()
let maskImage = UIImage(named: "chatGif")!
mask.contents = maskImage.CGImage
mask.frame = CGRectMake(0, 0, imageView.frame.width, imageView.frame.height)
imageView.layer.mask = mask
imageView.layer.masksToBounds = true

这是我的面具:

enter image description here

然而这是我得到的:

enter image description here

当我向蒙版图像添加切片(即创建可调整大小的帽内嵌)时,我得到了这个:

enter image description here

我做了一个最小的项目来演示这个问题并把它放在here

我根本不明白为什么我的 mask 图像的右侧和底部被剪掉了。蒙版的框架和边界与 ImageView 相匹配,用于蒙版的图像实际上比 ImageView 小,所以我希望它不会覆盖整个东西,而不是被部分剪裁。

有人可以解释一下这里发生了什么吗?如何防止这种行为?

编辑:我一直在玩这个,当我设置 mask 的大小以匹配 maskImage 大小时,结果更有意义,如下所示:

let mask = CALayer()
let maskImage = UIImage(named: "chatGif")!
mask.contents = maskImage.CGImage
mask.frame = CGRectMake(0, 0, maskImage.size.width, maskImage.size.height)
imageView.layer.mask = mask
imageView.layer.masksToBounds = true

这给了我:

enter image description here

或者通过对蒙版 Assets 进行切片,我在 J.Hunter 中获得图像的回答。这仍然不是我想要的,因为掩码没有被拉伸(stretch)以填充 imageView 并且两侧周围的大部分被屏蔽掉了不应该的,但我至少可以理解发生了什么这个案例。我将蒙版的框架设置为小于 imageView 的框架,因此它当然不会填满整个区域。

不过,我希望将蒙版的框架设置为与 imageView 的框架相匹配,这将使我在最后一张屏幕截图中看到的蒙版的右边缘和下边缘与右边缘和右边缘对齐imageView 的底部边缘。如果我打印出面具的框架、边界和 contentsRect,它们正是我所期望的:框架和边界匹配 imageViewcontentsRect(0.0, 0.0, 1.0, 1.0)。据我了解,CALayer 将根据 contentsRect 显示其内容的一部分,因此除非该矩形小于 1.0x1.0,否则整个内容图像应该被显示。正确的?但为什么这不是我所看到的?

最佳答案

我下载了您的演示项目并重写了一些代码,如下所示:

重写 func viewDidLoad() { super.viewDidLoad()

let mask = CALayer()
let maskImage = UIImage(named: "chatGif")!
print("image size is \(maskImage.size)")
mask.contents = maskImage.CGImage
mask.frame = CGRect(origin: CGPointZero, size: maskImage.size)
imageView.layer.mask = mask
imageView.layer.masksToBounds = true

您的 maskImage 的图像大小为 (39.5, 32.5)。看起来你的 chatGif.png 有问题

截图 enter image description here

关于ios - 如何防止剪裁 UIImageView 蒙版,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38111965/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com