我正在使用图案图像作为UITableViewCell
的背景颜色
cell.backgroundColor = [UIColor colorWithPatternImage[UIImage imageNamed:@"image.png"]]
但是,我希望图案图像的底部与单元格的底部对齐。默认情况下,图像的左上角与单元格的原点对齐。我需要这个的原因是因为单元格的高度是可变的,但无论高度如何,底部都需要看起来相同。
Apple文档指定为了更改模式图像的相位,应将颜色([UIColor colorWothPatternImage]
)设为当前颜色,然后调用CGContextSetPatternPhase。但是,我不确定如何在UITableViewCell
中设置cellForRowAtIndexPath
的backgroundColor的上下文中使用此方法。
我意识到之前曾经问过这个问题,但它没有回答我的问题。
答案 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:]
!)