Вы можете установить свойство transform
CALayers для соответствующего преобразования, если вы хотите перевернуть их систему координат, но учтите, что это, вероятно, также перевернет их чертеж contents
(я не проверял это, но имеет смысл, что это будет правдой). Мое утверждение, что CALayer, связанный с UIView, использует одну и ту же систему координат, на самом деле может быть совершенно ошибочным. Возможно также, что CALayers используют ту же систему координат, что и UIViews (то есть они никогда не переворачиваются по вертикали), но я подумал, что это так, поскольку CoreGraphics использует перевернутую систему координат относительно UIKit.
Простой способ проверить это добавить CALayer размером с экран в качестве подслоя слоя представления, а затем добавить еще один маленький CALayer в качестве подслоя этого слоя. Вы можете установить его на (0, 0, 320, 100) и посмотреть, будет ли он отображаться в верхней или нижней части экрана iPhone. Это скажет вам, в каком направлении идет ось Y для CoreAnimation.
- (void)viewDidLoad {
[super viewDidLoad];
CALayer *rootLayer = [CALayer layer];
rootLayer.frame = self.view.layer.bounds;
CALayer *smallLayer = [CALayer layer];
smallLayer.frame = CGRectMake(0, 0, rootLayer.bounds.size.width, 50);
smallLayer.backgroundColor = [UIColor blueColor].CGColor;
[rootLayer addSublayer:smallLayer];
[self.view.layer addSublayer:rootLayer];
}
Я только что выполнил этот тест сам, и кажется, что CALayers фактически используют ту же систему координат, что и UIViews, поэтому мое утверждение о том, что CALayer переворачивает ось Y, определенно неверно. Однако, если вы рисуете непосредственно с CoreGraphics, имейте в виду, что в CoreGraphics используется перевернутая ось Y (хотя при рисовании в подклассе UIView или, я предполагаю, делегате CALayer, контекст CoreGraphics уже перевернут чтобы соответствовать системе координат UIView (или CALayer).
Таким образом, короткий ответ, если вы сделали это так далеко, это то, что система координат для CALayer должна соответствовать системе координат для соответствующего ему UIView.