UIScrollView 内の UIView の変換された CGRect を取得しようとしています。ズームしていない場合は問題なく動作しますが、ズームすると、新しい CGRect がシフトします。これが私を近づけたコードです:
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 の値に基づいて x 座標と y 座標を変更する必要があります。ただし、これまでに試したことはすべて失敗しました。