Начиная с кода вроде:
UIImageView* superView=....;
UIImageView subView=[
[UIImageView alloc]initWithFrame:CGRectMake(0,0,subViewWidth,subViewHeight)
];
subView.center=CGPointMake(subViewCenterX, subViewCenterY);
[superView addSubview:subView];
Координата (subViewCenterX, subViewCenterY)
- это точка в superView, где центр subView
"закреплен". Подвид можно перемещать относительно суперпредставления, перемещая его центр вокруг. Мы можем пойти, например,
subView.center=CGPointMake(subViewCenterX+1, subViewCenterY);
чтобы переместить его на 1 пункт вправо. Теперь предположим, что у нас есть точка (X,Y)
в суперпросмотре, и мы хотим найти соответствующую точку (x,y)
в подпросмотре, чтобы (X,Y)
и (x,y)
ссылались на одну и ту же точку на экране. Формула для х:
x=X+subViewWidth/2-subViewCenterX;
и аналогично для y:
y=Y+subViewHeight/2-subViewCenterY;
Чтобы объяснить это, если вы рисуете прямоугольник, представляющий superView, и другой (больший) прямоугольник, представляющий subView, разница subViewWidth/2-subViewCenterX
равна «ширине бита блока subView, торчащего слева от superView. «