gpt4 book ai didi

iphone - 如何平铺 CALayer 的内容?

转载 作者:行者123 更新时间:2023-12-03 16:04:27 27 4
gpt4 key购买 nike

我想在 CALayer 上平铺 CGImage,但它似乎只想拉伸(stretch)它。

示例代码:

 self.background = [UIImage imageNamed: @"Background.png"];
[documentDisplay.layer setContents: self.background.CGImage];

如果可以的话,我想避免子类化。

最佳答案

您可以使用图案图像创建颜色并将其设置为图层的背景颜色。

为此,您需要将 CGImage 包装在 CGPattern 中,并从中创建 CGColor

// callback for CreateImagePattern.
static void drawPatternImage (void *info, CGContextRef ctx)
{
CGImageRef image = (CGImageRef) info;
CGContextDrawImage(ctx,
CGRectMake(0,0, CGImageGetWidth(image),CGImageGetHeight(image)),
image);
}

// callback for CreateImagePattern.
static void releasePatternImage( void *info )
{
CGImageRelease((CGImageRef)info);
}

//assume image is the CGImage you want to assign as the layer background
int width = CGImageGetWidth(image);
int height = CGImageGetHeight(image);
static const CGPatternCallbacks callbacks = {0, &drawPatternImage, &releasePatternImage};
CGPatternRef pattern = CGPatternCreate (image,
CGRectMake (0, 0, width, height),
CGAffineTransformMake (1, 0, 0, 1, 0, 0),
width,
height,
kCGPatternTilingConstantSpacing,
true,
&callbacks);
CGColorSpaceRef space = CGColorSpaceCreatePattern(NULL);
CGFloat components[1] = {1.0};
CGColorRef color = CGColorCreateWithPattern(space, pattern, components);
CGColorSpaceRelease(space);
CGPatternRelease(pattern);
yourLayer.backgroundColor = color; //set your layer's background to the image
CGColorRelease(color);

此代码是根据GeekGameBoard示例代码修改的。

关于iphone - 如何平铺 CALayer 的内容?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2520978/

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