1

我有一个 UIScrollView - 590 x 650 我在滚动视图中有 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;

但是当我尝试运行和滚动时,仅显示第二张图像的一半/部分并且滚动弹回,即使我一直拉动滚动条以显示第二张图像的结尾。

我在这里做错了什么?
我的内容大小设置/假设是否正确?

如果这个问题已经回答了,请指点我,因为我找不到正确的解释。

编辑:*.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;

图像尺寸为 1170x960 UIImage 视图尺寸为:1170x960(宽 x 高)图片集形式 IB 和属性设置为缩放以适应。

滚动视图大小为 590 x 650(宽 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 回答