12

UIScrollView の開始点を設定するにはどうすればよいですか? UIScrollView の左側に UIImageView を追加したいのですが、contentSize を変更すると、スクロール ビューの右側にスクロール ルームが追加されるだけです。scrollView の (0,0) ポイントの左側に ImageView を追加し、スクロールビューのコンテンツ サイズの一部にする方法を教えてください。

4

5 に答える 5

9

うまくいけば、私はあなたがここでやろうとしていることを手に入れました. これは、contentOffset を正しく処理するのに数ターンしかかからないと思います。

発進;

  • フレーム(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 になります。

(以下のコードでは、imageView ではなく 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];

それは役に立ちますか?

于 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 に答える
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 に答える