Джефф, просто объяснение того, что там происходит:
"ctx" делает маленькую "внеэкранную рабочую область".
Думайте об этом как о блокноте или блокноте...
ОК?
Фактически, "ctx" позволяет вам ссылаться на этот блокнот или блокнот.
Теперь вы спрашиваете, насколько велик этот блокнот?Фактически, оригинальный разработчик кода сделал этот эскизный блок того же размера, что и текущий экран.
Обратите внимание, что переменная, которая называется "screenRect", имеет неправильное имя .Он должен называться howBigWillOurSketchBlockBe.
Имеет смысл до сих пор?
Итак, сначала пройдите код и измените screenRect на howBigWillOurSketchBlockBe.Все сделано.
Теперь - как вы можете видеть, все, что вы делаете с новым кодом, - это изменение размера блокнота .
Имеет смысл?
Теперь вы видите строку с надписью "renderInContext" ... которая берет первое упомянутое, вместо self.view.layer, и отображает его в блоке эскизов .
Конечно, он начинает использовать нижний левый угол self.view.layer.
Поскольку ваш блок эскизов теперь довольно мал (посмотрите на вашу переменную howBigWillOurSketchBlockBe), и вы увидите, что происходит!
Итак, важно понять, что "howBigWillOurSketchBlockBe" (ранее был плохо назван "screenRect") - это просто и только РАЗМЕР СКЕТЧБЛОКА , который вы настроили для рисования.1039 *
Так что теперь вы задаетесь вопросом, как решить проблему!Я думаю, вам нужно будет посмотреть на петуха на этой странице,
http://developer.apple.com/library/mac/#documentation/graphicsimaging/Conceptual/drawingwithquartz2d/dq_affine/dq_affine.html
Помогает ли применение небольшого преобразования?CGContextTranslateCTM ...
Надеюсь, это поможет!