设置UIScrollView的内容大小的起点

时间:2011-09-06 10:21:22

标签: iphone objective-c ios4 uiscrollview contentsize

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

5 个答案:

答案 0 :(得分:9)

希望我有你想要做的事情。我认为这只需要几次轮流就可以使用contentOffset。

开始;

  • 在第0帧(0,0,320,480)添加scrollView - 它是一个全屏幕滚动条
  • 将contentSize设置为(320 * 3,480) - 它现在的内容宽度为3'页'
  • 将imageView作为子视图添加到框架(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];

这有帮助吗?

答案 1 :(得分:3)

实际上,如果您在iPhone中,最好是在卷轴中间启动的解决方案

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

适用于iPad

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

答案 2 :(得分:1)

尝试设置内容偏移量。

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

答案 3 :(得分:0)

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

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

干杯。

答案 4 :(得分: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)
}