Установите начальную точку размера контента для UIScrollView - PullRequest
11 голосов
/ 06 сентября 2011

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

Ответы [ 5 ]

9 голосов
/ 07 сентября 2011

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

Начиная с;

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

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

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];

Это помогает?

3 голосов
/ 14 июня 2012

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

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

и для iPad

[scroller setContentOffset:CGPointMake(1024, 0)];
[self.view addSubview:scroller];
1 голос
/ 27 января 2015

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

[scrollView setContentOffset:CGPointMake(320, 0.0)];
0 голосов
/ 03 августа 2014

Ключом к настройке начальной точки является назначение границ с координатами 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)
}
0 голосов
/ 06 сентября 2011

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

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

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

...