iOS: Использование «drawRect:» UIView по сравнению с его делегатом «drawLayer: inContext:»

У меня есть класс, являющийся подклассом UIView . Я могу рисовать элементы внутри представления либо путем реализации метода drawRect , либо путем реализации метода drawLayer: inContext: , который является методом делегата CALayer .

У меня два вопроса:

  1. Как решить, какой подход использовать? Есть ли вариант использования для каждого из них?
  2. Если я реализую drawLayer: inContext: ,

    [[self layer] setDelegate: self];

    почему вызывается метод делегата, если мой экземпляр не определен как делегат уровня? и какой механизм предотвращает вызов drawRect , если вызывается drawLayer: inContext: ?

72
задан Cœur 6 February 2018 в 07:44
поделиться