【问题标题】:Aligning Background Within a CALayer在 CALayer 中对齐背景
【发布时间】:2011-06-08 22:29:12
【问题描述】:

我正在尝试从图像上下文创建 UIImage 并将其设置为 CALayer 的内容(图像最终会拆分并分布在多个 CALayer 中)。唯一的问题是,它似乎没有正确对齐 - 它偏移了 30 像素左右。

- (id)initWithFrame:(CGRect)frame {
    if ((self = [super initWithFrame:frame])) {

        number = 1;

        background = [UIImage imageNamed:@"numberBackground.png"];

        // draw images
        UIGraphicsBeginImageContext(CGSizeMake(background.size.width, background.size.height));

        [background drawAtPoint:CGPointMake(0, 0)];

        NSString *numberString = [[NSString alloc] initWithString:[NSString stringWithFormat:@"%d", number]];
        [[UIColor whiteColor] set];
        [numberString drawAtPoint:CGPointMake(0, 0) withFont:[UIFont fontWithName:@"HelveticaNeue" size:128]];

        UIImage *front = [UIGraphicsGetImageFromCurrentImageContext() retain];

        UIGraphicsEndImageContext();

        // top layer
        topLayer = [CALayer layer];
        [topLayer setContents:(id)front.CGImage];
        [topLayer setContentsGravity:@"kCAGravityTop"];
        [topLayer setFrame:CGRectMake(0, 0, background.size.width, background.size.height / 2)];
        [topLayer setAnchorPoint:CGPointMake(0, 1)];
        [topLayer setPosition:CGPointMake(0, background.size.height / 2)];
        [topLayer setMasksToBounds:NO];
        [topLayer setBackgroundColor:[UIColor lightGrayColor].CGColor];
        [self.layer addSublayer:topLayer];

    }
    return self;
}

我还没有足够的声望点来发布图像,但这里是图层的渲染方式,以及它应该如何渲染和完整的图像:link text

【问题讨论】:

    标签: iphone objective-c cocoa ios core-animation


    【解决方案1】:

    发现我的错误 - setContentsGravity 应该采用内置字符串常量 kCAGravityTop,而不是我的 NSString 文字 @"kCAGravityTop"。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-01-03
      • 1970-01-01
      • 2015-09-01
      • 1970-01-01
      • 2023-03-08
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多