1

UIScrollViewがあります-590x650スクロールビューに2つのUIImageがあります:620 x 450したがって、contentsizeとプロパティを次のように設定します:

    self.scroller.minimumZoomScale=0.5;
    self.scroller.maximumZoomScale=6.0;
    self.scroller.contentSize=CGSizeMake(1350, 950);// EDIT : 1350 because 620 + 620 
    //950 because 450 + 450 and 50 extra

    self.scroller.contentInset=UIEdgeInsetsMake(64.0,0.0,44.0,0.0);
    self.scroller.scrollIndicatorInsets=UIEdgeInsetsMake(64.0,0.0,44.0,0.0);

    self.scroller.delegate=self;

しかし、実行してスクロールしようとすると、2番目の画像の半分/部分しか表示されず、スクロールを最後まで引いて2番目の画像の終わりを表示しても、スクロールが跳ね返ります。

私はここで何を間違っているのですか?
コンテンツサイズの設定/想定は正しいですか?

この質問がすでに回答されている場合は、正しい説明が見つからなかったので、それを指摘してください。

編集:*。hファイル

@interface ViewController : UIViewController<UIScrollViewDelegate>
{
    UIScrollView *scroller;
    UIImageView *varImage1;
    UILabel *lblStyle;
    BOOL isAlpha;
    UITextView *textView;
}

@property (retain, nonatomic) IBOutlet UIScrollView *scroller;
@property (retain, nonatomic) IBOutlet UIImageView *varImage1;
@property (retain, nonatomic) IBOutlet UILabel *lblStyle;

- (IBAction)notesClick:(id)sender;
@property (retain, nonatomic) IBOutlet UIButton *notesClick;

@property (retain, nonatomic) IBOutlet UITextView *textView;


@end

*.mファイル

// calculate minimum scale to perfectly fit image width, and begin at that scale
    float minimumScale = [scroller frame].size.width  / [varImage1 frame].size.width;
    [scroller setMinimumZoomScale:minimumScale];
    [scroller setZoomScale:minimumScale];
    scroller.contentSize= CGSizeMake(960,1170);

    scroller.delegate=self;

画像サイズは1170x960UI画像ビューサイズは次のとおりです。1170x960(幅x高さ)画像セットフォームIBおよびプロパティはサイズに合わせて拡大縮小されます。

スクロールビューのサイズは590x650(幅x高さ)です

オブジェクト階層:

ここに画像の説明を入力してください

ロード時の初期表示:*注:画像が部分的に表示されていても、右にスクロールして残りの画像を表示することはできません。 ここに画像の説明を入力してください

画像をズームアウトした後、画像が部分的にしか表示されていなくてもスクロールできます ここに画像の説明を入力してください

4

1 に答える 1

0

画像を作成して追加するコードを見せていただけますか?

また、安全で一般的な方法は次のとおりです。

CGSize contentSize = CGSizeZero;
for(UIView *view in self.scroller.subviews) {
  contentSize.height = MAX(contentSize.height, view.frame.origin.y + view.frame.size.height);
  contentSize.width  = MAX(contentSize.width, view.frame.origin.x + view.frame.size.width);
}
CGFloat border = 50;
contentSize.height += border;
contentSize.width  += border;
self.scroller.contentSize = contentSize;

scrollView 内の任意のビューの最下部と最右の位置を見つけて、それを contentSize として使用します。

于 2012-11-06T10:02:54.587 に答える