Как установить начальную точку UIScrollView? Я хотел бы добавить UIImageView слева от UIScrollView, но изменение contentSize добавляет только прокрутку комнаты справа от scrollview. Как добавить ImageView влево от точки scrollView (0,0) и сделать его частью размера содержимого прокрутки?
Задайте начальную точку размера содержимого для UIScrollView
Ответ 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)
}