Objective c UIScrollView内容大小属性

Objective c UIScrollView内容大小属性,objective-c,uiscrollview,Objective C,Uiscrollview,我有一个UIScrollView-590 x 650 我在滚动视图中有两个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

我有一个UIScrollView-590 x 650 我在滚动视图中有两个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
图像大小为1170x960 UIImage视图大小为:1170x960(宽x高)图片集表格IB,属性设置为按比例缩放

滚动视图大小为590 x 650(宽x高)

对象层次结构:

加载时的初始视图:*注意:即使图像部分显示,我也无法向右滚动查看图像的其余部分。

缩小图像后,即使图像仅部分显示,我也可以滚动

能否向我们展示代码,您在哪里创建和添加图像

此外,安全和通用的方法如下:

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。

您的图像宽度是620,因此620+620=1240而不是1200,因此请自行设置内容大小。scroller.contentSize=CGSizeMake(1350950);你说的是对的。但这对回答这个问题没有任何帮助。当我垂直滚动时,UIImage仍然会反弹,并且没有完全显示第二幅图像。@Vinu,您检查过UIScrollView的框架了吗?有没有可能在superview之外?@ACB:有,我查过了。UIScrollView左上角的位置为0,0。所以没问题。我添加了IB中的图像。您确定ImageView是scrollView的子视图吗?什么是确切的imageView帧?如果您使用的是interfaceBuilder,为什么要在代码中设置所有其他属性。你可以在那里做。IBOutlet
self.scroller
是否正确连接?能否从IB设置contentSize??我读到只有这个必须在代码中设置,因此我使用代码来设置值。我为scroller制作了一个插座并正确连接,我确信它工作正常,因为我已经编写了缩放代码,它工作正常,所以插座也被正确分配和连接。图像视图,我在IB的滚动视图中添加了它,所以我认为它是正确的。我们可以通过其他方式进行检查吗?/请将scrollView和两个ImageView的
框架
记录到控制台并显示给我们。还要记录最终的contentSize。一切都设置好之后。你还在用self.scroller做其他事情吗?对不起,我对内容做了一些修改,但问题仍然是一样的。
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;