Как нарисовать текст в подпредставлении? - PullRequest
0 голосов
/ 01 июня 2009

Я хочу нарисовать текст в подпредставлении UIView с помощью вызова drawInRect:withFont:lineBreakMode, но это работает только в текущем контексте.

Можно ли нарисовать текст в подпредставлении из текущего представления?

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

Ответы [ 3 ]

1 голос
/ 01 июня 2009

Нет, если вы собираетесь что-то делать с контекстом, вы должны быть в этом представлении -drawRect :. Вы всегда можете сделать свое подпредставление подклассом UIView, который переопределяет -drawRect: для отображения нужного текста ... но в этот момент вы как бы заново изобретаете UILabel.

1 голос
/ 01 июня 2009

Одним из вариантов будет добавление CALayer к слою представления вместо добавления UIView к представлению. CALayer имеет свойство delegate, которому вы можете назначить любой объект. CALayer звонит:

- (void)drawLayer:(CALayer *)layer inContext:(CGContextRef)ctx

на delegate, который вы можете использовать, чтобы сделать что-то вроде:

- (void)drawLayer:(CALayer *)layer inContext:(CGContextRef)ctx {
    if (layer == myLayer) {
        UIGraphicsPushContext(ctx);
        [string drawInRect:rect withFont:font lineBreakMode:mode];
        UIGraphicsPopContext();
    }
}
0 голосов
/ 01 июня 2009

Нет, вы не можете делать то, что вы описываете. Подклассы UIView - это именно тот метод, который вы должны использовать для этого - нет ничего плохого в создании подкласса UIView, который имеет только простой метод -drawRect:.

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