Изменение фазы изображения шаблона - PullRequest
3 голосов
/ 15 декабря 2011

Я использую изображение шаблона в качестве цвета фона для UITableViewCell на

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

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

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

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

1 Ответ

5 голосов
/ 30 мая 2012

Я вижу, что этот вопрос задавался давно, и вы, вероятно, уже нашли решение, но я наткнулся на ту же проблему и нашел решение и решил, что я должен опубликовать его для дальнейшего использования. Нет смысла в том, что более чем у одного человека болит голова от одного и того же:)

Сначала вы должны создать подкласс для любого вида, в который хотите переместить 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:]!)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...