改变模式图像的相位

我使用一个模式图像作为UITableViewCell的背景色

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

但是,我想模式图像的底部与单元格的底部alignment。 默认情况下,图像的左上angular与单元格的原点alignment。 我需要这个的原因是因为单元格的高度是可变的,但底部需要显示相同的高度。

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

我意识到这已经被问过,但是它没有回答我的问题。

我看到这个问题很久以前就被问到了,你可能已经find了解决办法,但是我偶然发现了同样的问题,并find了一个解决办法,并认为我应该将其发布以供将来参考。 在同一件事情上不止一个人头疼的感觉:)

首先,你必须inheritance你所希望的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:] !)