更改图案图像的相位

时间:2011-12-15 04:12:20

标签: iphone ios cocoa-touch

我正在使用图案图像作为UITableViewCell的背景颜色

cell.backgroundColor = [UIColor colorWithPatternImage[UIImage imageNamed:@"image.png"]]

但是,我希望图案图像的底部与单元格的底部对齐。默认情况下,图像的左上角与单元格的原点对齐。我需要这个的原因是因为单元格的高度是可变的,但无论高度如何,底部都需要看起来相同。

Apple文档指定为了更改模式图像的相位,应将颜色([UIColor colorWothPatternImage])设为当前颜色,然后调用CGContextSetPatternPhase。但是,我不确定如何在UITableViewCell中设置cellForRowAtIndexPath的backgroundColor的上下文中使用此方法。

我意识到之前曾经问过这个问题,但它没有回答我的问题。

1 个答案:

答案 0 :(得分:5)

我看到很久以前就问过这个问题了,你可能已经找到了一个解决方案,但我偶然发现了同样的问题并找到了解决方案,并认为我应该将其发布以供将来参考。在同一件事上不止一个人头疼是没有意义的:)

首先,您必须为要移动UIColor的任何视图创建子类。所以在这种情况下,UITableViewCell

..最后,在drawRect:方法中使用此代码来移动原点。你已经完成了!

CGContextRef context = UIGraphicsGetCurrentContext();
CGContextSaveGState(context);
CGSize phase = CGSizeMake(0, self.bounds.size.height); // CHANGE THESE VALUES TO WHATEVER X/Y SHIFT YOU NEED
CGContextSetPatternPhase(context, phase);

CGColorRef color = self.backgroundColor.CGColor;
CGContextSetFillColorWithColor(context, color);
CGContextFillRect(context, self.bounds);

CGContextRestoreGState(context);

通过将“相位”的宽度和高度值移位原点来进行移位。

希望有所帮助! (别忘了[super drawRect:]!)