Задайте начальную точку размера содержимого для UIScrollView

Как установить начальную точку UIScrollView? Я хотел бы добавить UIImageView слева от UIScrollView, но изменение contentSize добавляет только прокрутку комнаты справа от scrollview. Как добавить ImageView влево от точки scrollView (0,0) и сделать его частью размера содержимого прокрутки?

Ответ 1

Надеюсь, у меня есть то, что вы пытаетесь сделать здесь. Я думаю, что это займет всего несколько оборотов, а contentOffset - правильно.

Запуск,

  • Добавить scrollView в кадр (0,0,320,480) - его полноэкранный скроллер
  • установите contentSize в (320 * 3, 480) - теперь он имеет контент с шириной 3 'страниц'
  • Добавьте свое изображение в качестве подсмотра в scrollView в кадре (320,0,320,480)
  • set contentOffset от scrollView до (320, 0) - это приведет к перемещению содержимого прокрутки влево в направлении отрицательного x на 320
  • Теперь ваше изображение будет отображаться на экране, но оно будет иметь ширину 320 пикселей как слева, так и справа от содержимого скроллера.

(Обратите внимание, что в приведенном ниже коде я просто добавил UIView, а не изображение)

UIScrollView *scroller = [[UIScrollView alloc] initWithFrame:CGRectMake(0, 0, 320, 480)];
scroller.delegate = self;
scroller.pagingEnabled = YES;
scroller.backgroundColor = [UIColor blueColor];
scroller.contentSize = CGSizeMake(960, 480);

UIView *imgView = [[UIView alloc] initWithFrame:CGRectMake(320, 0, 320, 480)];
[imgView setBackgroundColor:[UIColor redColor]];
[scroller addSubview:imgView];

[scroller setContentOffset:CGPointMake(320, 0)];
[self.view addSubview:scroller];

Помогает ли это?

Ответ 2

На самом деле лучшее решение для начала в середине скроллера, если вы находитесь на iPhone, вы должны

[scroller setContentOffset:CGPointMake(320, 0)];
[self.view addSubview:scroller];

И для iPad

[scroller setContentOffset:CGPointMake(1024, 0)];
[self.view addSubview:scroller];

Ответ 3

Попробуйте установить смещение содержимого.

[scrollView setContentOffset:CGPointMake(320, 0.0)];

Ответ 4

Если вы просто хотите установить, где содержимое скроллера должно быть размещено в начале, вы можете сделать это с помощью метода - (void)setContentOffset:(CGPoint)contentOffset animated:(BOOL)animated, который будет прокручивать содержимое до точки, указанной в методе.

Сообщите мне, если это не то, что вы хотели знать, и я вернусь к вам!

Приветствия.

Ответ 5

Ключом к установке начальной точки является назначение границ с координатами xy, отличными от нуля. Как этот

lazy var contentView: UIView = {
    let size = CGFloat(5000)
    let view = UIView(frame: CGRectZero)
    view.frame = CGRectMake(0, 0, size, size)
    view.bounds = CGRectMake(-size/2, -size/2, size, size)
    return view
}()

func centerContent() {
    let frame = UIEdgeInsetsInsetRect(self.scrollView.bounds, self.scrollView.contentInset)
    let navigationBarHeight = self.scrollView.contentInset.top
    let x = (self.scrollView.contentSize.width/2) - (frame.size.width/2)
    let y = (self.scrollView.contentSize.height/2) - (frame.size.height/2) - navigationBarHeight
    self.scrollView.contentOffset = CGPointMake(x, y)
}