Реализация масштабирования в CALayer - PullRequest
1 голос
/ 19 декабря 2011

Я пытаюсь реализовать масштабирование CALayer в многоуровневом хостинге NSVIew. NSView со слоем (размер слоя: 1024x768) находится внутри NSScrollView. Для реализации масштабирования я сделал следующее

- (IBAction)zoomOut:(NSButton *)sender {
CALayer *layer = self.editorView.layer;
CGRect frame = layer.frame;
frame.size.width = frame.size.width / 2;
frame.size.height = frame.size.height / 2; 
layer.frame = frame;
}

- (IBAction)zoomIn:(NSButton *)sender {
   CALayer *layer = self.editorView.layer;
   CGRect frame = layer.frame;
  frame.size.width = frame.size.width * 2;
  frame.size.height = frame.size.height * 2; 
  layer.frame = frame;
}

После нажатия на кнопку для увеличения или уменьшения масштаба в NSView проблема заключается в том, что всякий раз, когда я прокручиваю NSView (помните, что я помещаю NSView в NSScrollView, и что NSView больше, чем NSScrollView), CALayer автоматически изменяет размер до исходного размера (т.е. 1024x768). Я не могу понять причину. Любая помощь будет принята с благодарностью.

1 Ответ

0 голосов
/ 09 марта 2012

+ (CALayer *)layer резервное хранилище псевдонимов (я называю это корневым слоем) изменяет размеры с представлением, предотвратить это невозможно.

...