после WWDC2010 Сессия 104 Я только что создал CATiledLayer в пределах UIScrollView
для изображения 10000 x 8078 пикселей.CATiledLayer получает неверное значение frame & contextCTM.a (zoomScale)
Я беспокойный с рамой & zoomScale
, когда представление первых показывает на своем верхнем уровне
- как в сессии 104 я определил
levelsOfDetail
как 4 - в моей DrawRect я называю
CGFloat lScale = CGContextGetCTM(lContext).a;
Странно во время выполнения lScale назначается 0.124907158, а не 0.125, как ожидалось.
Как хорошо rect
передается drawRect
имеет floatpoint значения, такие, как
- rect.origin.x = 4099,04443
- rect.origin.y = 6144
- rect.size.width = 2049,52222
- rect.size.height = 2048
Наиболее раздражающим для меня является то, что рама CATiledLayer
показывает начало координат 0 x 26.93, хотя я создал tiledImageView, используя initWithFrame
, используя начало 0x0.
Любые идеи, где я могу найти расчет, который несет ответственность за это?
РЕДАКТИРОВАТЬ: Я нашел источник для позиции кадра, странно, который граница Scrollview быть неправильно установлена на 450 пикселей. это должно быть 420 пикселей. В процедуре layoutSubview в UIScrollView есть процедура просмотра по центру, которая непреднамеренно скорректировала координату y.
Вы только что исправили проблему, с которой я боролся часами. :-) У меня был CATiledLayer, который работал отлично, но когда я попытался изменить его положение (фрейм), значения шкалы внезапно изменились, например. 0,5-0,49756. Я пробовал ваше решение и округлял ширину и высоту CATiledLayer, и теперь он работает! Спасибо, что поделились решением, которое вы нашли. :-) –
Хорошо, это действительно исправить проблему, но она представила другую. Когда вы хорошо масштабируетесь в UIScrollView, вы можете видеть, что размер CATiledLayer неверен в отношении UIScrollView. Вы можете видеть это, потому что правый и нижний края становятся черными, поскольку CATiledLayer не полностью заполняет UIScrollView, а затем вы можете увидеть цвет фона UIScrollView. В некоторых случаях это может быть хорошо, но, к сожалению, не в моем. Мне придется попробовать что-то еще, возможно, округлить масштаб. –