2011-12-15 2 views
3

iI'm с использованием шаблона изображения в качестве фонового цвета для UITableViewCell отИзменение фазы шаблона изображения

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

Однако, хотелось бы в нижней части рисунка изображение, чтобы согласовать с нижней части клетка. По умолчанию верхний левый угол изображения совпадает с началом ячейки. Причина, в которой я нуждаюсь, заключается в том, что высота ячейки является переменной, но нижняя часть должна отображаться одинаково независимо от высоты.

Документы Apple указывают, что для изменения фазы изображения шаблона цвет ([UIColor colorWothPatternImage]) должен быть сделан текущим цветом, а затем должен вызываться CGContextSetPatternPhase. Однако я не уверен, как использовать этот метод в контексте установки backgroundColor UITableViewCell в cellForRowAtIndexPath.

Я понимаю, что это было задано раньше, однако оно не отвечало на мой вопрос.

ответ

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:]!)

Смежные вопросы