12

如何设置 UIScrollView 的起点?我想在 UIScrollView 左侧添加一个 UIImageView 但更改 contentSize 只会在滚动视图的右侧添加滚动空间。如何在滚动视图的 (0,0) 点左侧添加一个 ImageView 并使其成为滚动视图内容大小的一部分?

4

5 回答 5

9

希望我有你想要在这里做的事情。我认为这只需使用 contentOffset 转几圈就可以了。

出发;

  • 在帧 (0,0,320,480) 添加滚动视图 - 它是一个全屏滚动条
  • 将 contentSize 设置为 (320*3, 480) - 它现在有一个宽度为 3 'pages' 的内容
  • 将您的 imageView 作为子视图添加到 frame (320,0,320,480) 的 scrollView
  • 将 scrollView 的 contentOffset 设置为 (320, 0) - 这会将 scrollView 的内容在负 x 方向上向左移动 320
  • 现在您的 imageView 将出现在屏幕上,但滚动条内容的左侧和右侧都将具有 320px 的宽度。

(请注意,在下面的代码中,我只是添加了 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];

这有帮助吗?

于 2011-09-07T10:30:36.307 回答
3

实际上,如果您在 iPhone 中,最好从滚动条中间开始,您应该

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

对于 iPad

[scroller setContentOffset:CGPointMake(1024, 0)];
[self.view addSubview:scroller];
于 2012-06-14T18:02:02.053 回答
1

尝试设置内容偏移量。

[scrollView setContentOffset:CGPointMake(320, 0.0)];
于 2015-01-27T11:54:10.230 回答
0

如果您只是想在开始时设置滚动条内容的位置,您可以使用- (void)setContentOffset:(CGPoint)contentOffset animated:(BOOL)animated将内容滚动到方法中指定的点的方法来执行此操作。

如果这不是您想知道的,请告诉我,我会尽快回复您!

干杯。

于 2011-09-06T10:29:12.007 回答
0

设置起点的关键是指定 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)
}
于 2014-08-03T14:50:25.657 回答