gpt4 book ai didi

ios - 在 CALayer 中添加 UIImage

转载 作者:IT王子 更新时间:2023-10-29 07:41:46 26 4
gpt4 key购买 nike

我必须添加一个 UIImageView 作为 MapView 的 subview 。为此,我在 MapView 上方创建了一个图层。在这一层我想放我的图像,但我得到一个白色的矩形,没有别的。我的图片不可见。

这是代码:

- (void)viewDidLoad
{
//......

CALayer *layer = [CALayer layer];
layer.backgroundColor = [[UIColor whiteColor] CGColor];

if(UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPhone)
{
layer.bounds = CGRectMake(self.mapView.bounds.origin.x,
self.mapView.bounds.origin.y, 80, 300);
}
else
{
layer.bounds = CGRectMake(self.mapView.frame.origin.x,
self.mapView.frame.origin.y, 150, 700);
}

layer.contents = (id)[UIImage imageNamed:@"myImage.png"];
//the name is correct but in the output the image is not visible

[[self.mapView layer] addSublayer:layer];
[layer setNeedsDisplay];
}

最佳答案

为了 future 的观众,这是一个一般性的答案。它基于问题标题而不是原始问题的详细信息。

如何将 UIImage 添加到 CALayer

您可以通过使用其 contents 属性将图像添加到 View 的 layer:

myView.layer.contents = UIImage(named: "star")?.cgImage
  • 请注意,UIImage 需要转换为 CGImage

如果你想在自己的图层中添加图像,你可以这样做:

let myLayer = CALayer()
let myImage = UIImage(named: "star")?.cgImage
myLayer.frame = myView.bounds
myLayer.contents = myImage
myView.layer.addSublayer(myLayer)

修改外观

上面的代码产生了这样的 View 。浅蓝色是 UIView,深蓝色星星是 UIImage

enter image description here

不过,如您所见,它看起来像素化了。这是因为 UIImageUIView 小,所以它被缩放以填充 View ,如果您没有指定任何其他内容,这是默认设置。

下面的示例显示了层的 contentsGravity 属性的变体。代码如下所示:

myView.layer.contents = UIImage(named: "star")?.cgImage
myView.layer.contentsGravity = kCAGravityTop
myView.layer.isGeometryFlipped = true

在 iOS 中,您可能需要设置 isGeometryFlipped property如果您正在使用顶部或底部重力做任何事情,则为 true,否则它将与您的预期相反。 (只有重力被垂直翻转,而不是内容呈现。如果您在翻转内容时遇到问题,请参阅 this answer。)

对于每个 contentsGravity 设置,下面有两个 UIView 示例,一个 View 比 UIImage 大,另一个比 UIImage 小。这样您就可以看到缩放和重力的影响。

kCAGravityResize

这是默认值。

enter image description here

kCAGravityResizeAspect

enter image description here

kCAGravityResizeAspectFill

enter image description here

kCAGravityCenter

enter image description here

kCAGravityTop

enter image description here

kCAGravityBottom

enter image description here

kCAGravityLeft

enter image description here

kCAGravityRight

enter image description here

kCAGravityTopLeft

enter image description here

kCAGravityTopRight

enter image description here

kCAGravityBottomLeft

enter image description here

kCAGravityBottomRight

enter image description here

相关

关于ios - 在 CALayer 中添加 UIImage,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13272512/

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