我正在使用[UIColor colorWithPatternImage:]
为我的分组UITableViewCell设置背景图片。我为自己的细胞获得了自由的圆角,一切看起来都很棒,直到我尝试给细胞不同的高度。
理想情况下,我希望背景图像垂直居中,但colorWithPatternImage:
方法从左下角开始图像模式,这使我的单元格看起来很糟糕。
它在文档中说
“默认情况下,返回颜色的相位为0,这会导致图像的左上角与绘图原点对齐。要更改相位,请将颜色设置为当前颜色,然后使用CGContextSetPatternPhase函数来改变阶段。“
但我不知道如何将CGContextSetPatternPhase
用于我当前的实现。
我试过
- (void)drawRect:(CGRect)rect
{
CGContextRef context = UIGraphicsGetCurrentContext();
CGContextSaveGState(context);
CGSize phase = CGSizeMake(50, 50);
CGContextSetPatternPhase(context, phase);
UIImage* image = [UIImage imageNamed:@"cell_background"];
UIColor* color = [UIColor colorWithPatternImage:image];
self.backgroundColor = color;
CGContextRestoreGState(context);
[super drawRect:rect];
}
但这对模式阶段没有任何影响。谁能告诉我我怎么用它?
非常感谢,
约瑟夫
答案 0 :(得分:2)
核心图形调用通常用作特定绘图过程的一部分;设置backgroundColor
属性实际上并不绘制任何内容,它只是设置默认情况下视图的绘制方式。 Quartz 2D Programming Guide有一个explanation of how to draw using pattern images;您可以通过
CGColorRef color = [UIColor colorWithPatternImage:image].CGColor;
CGContextSetFillColorWithColor(context, color);
CGContextFillRect(context, self.bounds);
...但我不保证,因为UIColor模式可能无法与Core Graphics一起使用。您可能必须采取上面链接中描述的更精细的路线。