Я пытался получить преобразованный CGRect UIView в UIScrollView. Он отлично работает, если я не увеличил масштаб, но как только я увеличил масштаб, новый CGRect сдвинется. Вот код, который получил меня близко:ConvertRect учет UIScrollView zoom и contentOffset
CGFloat zoomScale = (scrollView.zoomScale);
CGRect newRect = [self.view convertRect:widgetView.frame fromView:scrollView];
CGPoint newPoint = [self.view convertPoint:widgetView.center fromView:scrollView];
// Increase the size of the CGRect by multiplying by the zoomScale
CGSize newSize = CGSizeMake(newRect.size.width * zoomScale, newRect.size.height * zoomScale);
// Subtract the offset of the UIScrollView for proper positioning
CGPoint newCenter = CGPointMake(newPoint.x - scrollView.contentOffset.x, newPoint.y - scrollView.contentOffset.y);
// Create rect with the proper width/height (x and y set by center)
newRect = CGRectMake(0, 0, newSize.width, newSize.height);
[self.view addSubview:widgetView];
widgetView.frame = newRect;
widgetView.center = newCenter;
Я довольно уверен, что мой вопрос заключается в zoomScale - я, вероятно, следует модифицировать координаты х и у на основе значения zoomScale. Тем не менее, все, что я пробовал до сих пор, не увенчалось успехом.
Я очень смущаюсь о системе координат subView UIScrollView при увеличении UIScrollView. Есть ли какие-то документы, которые полностью объясняют это? – Yeung