Как сосредоточить контент в UIScrollView с помощью contentOffset

Это должно быть ОЧЕНЬ легкая проблема, но у меня возникают проблемы с получением желаемого результата. У меня горизонтальная прокрутка UIScrollView с шириной 320. Ширина его содержимого - 5000. Я пытаюсь сосредоточить содержимое с помощью

// 'self' is the UIScrollView
CGFloat newContentOffsetX = (self.width/2) + (self.contentSize.width/2);
self.contentOffset = CGPointMake(newContentOffsetX, 0);

Я не понимаю, почему это не центрирует контент. Вы можете увидеть что-то не так с расчетами?

Ответы

Ответ 1

Я думаю, вы хотите:

CGFloat newContentOffsetX = (self.contentSize.width/2) - (self.bounds.size.width/2);

Диаграмма

|------------------------self.contentSize.width------------------------|
                         |-----self.width-----|
|-------- offset --------|
                                    ^ center

Ответ 2

Используйте код ниже:

CGFloat newContentOffsetX = (scrollView.contentSize.width - scrollView.frame.size.width) / 2;
scrollView.contentOffset = CGPointMake(newContentOffsetX, 0);