Как сохранить центр UIView, используя UIScrollview contentoffset iOS? - PullRequest
0 голосов
/ 10 апреля 2019

У меня есть UIView внутри UIScrollView, который содержит 4 подпредставления. при нажатии на подпредставление я хочу настроить свойство contentoffset scrollview таким образом, чтобы мои прикосновения subview были выровнены по центру экрана.

Я попробовал логику, но она не работает должным образом.

-(void)onDragViewTapped:(UITapGestureRecognizer *)recognizer
{
    CGFloat width = self.scrollVw.contentSize.width/2;
    CGFloat vwWidth = recognizer.view.frame.size.width/2;
    width = width - vwWidth - vwWidth/self.scrollVw.zoomScale - 
    width/self.scrollVw.zoomScale;

    CGFloat height = self.scrollVw.contentSize.height/2;
    CGFloat vwHeigh = recognizer.view.frame.size.height/2;
    height = height- vwHeigh -  vwHeigh/self.scrollVw.zoomScale - 
    height/self.scrollVw.zoomScale;

    [self.scrollVw setContentOffset:CGPointMake(width, height) 
    animated:YES];
}

Ответы [ 2 ]

0 голосов
/ 10 апреля 2019

В соответствии с документами Apple, Преобразование между системами координат вида

Преобразует точку из системы координат получателя в систему координат указанного вида.

  • func convert (CGPoint, to: UIView?) -> CGPoint

Преобразует точку из системы координат данного ракурса в систему координат получателя.

  • func convert (CGPoint, from: UIView?) -> CGPoint

Преобразует прямоугольник из системы координат получателя в систему координат другого вида.

  • func convert (CGRect, to: UIView?) -> CGRect

Преобразует прямоугольник из системы координат другого ракурса в систему координат получателя.

  • func convert (CGRect, from: UIView?) -> CGRect

Думаю, это поможет вам.

0 голосов
/ 10 апреля 2019

Это работает для меня (на самом деле без масштабирования):

// This view below here is the view of the view controller, 
// use the container view instead to align the center to
let newX = tappedView.center.x - view.center.x
let newY = tappedView.center.y - view.center.y
scrollview.setContentOffset(CGPoint(x: newX, y: newY), animated: true)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...