在超级视图边界外显示视图

时间:2011-01-27 03:00:26

标签: iphone objective-c ipad

我的应用程序中有一个滚动视图,以及我希望用户在滚动视图中滑动的一系列图片。我希望所有这些都可见,但页面仍然是其中一张图片的宽度。我怎样才能做到这一点? (告诉我,如果我需要更多细节)

3 个答案:

答案 0 :(得分:1)

如果我理解正确,您必须将contentSize属性设置为大,以适合所有图像。你必须设置pagingEnabled = YES

因此,滚动的帧大小将等于图像的大小,内容大小将是所有图像帧的边界矩形。

答案 1 :(得分:1)

您需要将UIScrollView框架设置为图片的大小,然后将UIScrollView的contentSize设置为图像数量的宽度*图像宽度。如果您希望每张照片都像大多数应用中的“页面”一样,您还需要将pagingEnabled设置为YES。您可能还想要抑制滚动指示器。

例如:

NSArray someArrayOfUIImageViews...
NSUInteger imageWidth = 100;

pageScroller = [[UIScrollView alloc] initWithFrame:CGRectMake(0,0,imageWidth,160)];
pageScroller.scrollEnabled = YES;
pageScroller.showsHorizontalScrollIndicator = NO;
pageScroller.showsVerticalScrollIndicator = NO;
pageScroller.pagingEnabled = YES;
pageScroller.contentSize = imageWidth * [someArrayOfUIImageViews count];

然后将pageScroller添加到父视图,然后将每个图像添加到pageScroller,将它们分散到contentSize区域...

for (UIImageView * someImageView in someArrayOfUIImageViews)
{
    CGFrame frame = someImageView.frame;
    frame.origin.x += frame.size.width;
    someImageView.frame = frame;
    [pageScroller addSubview:someImageView];
}

答案 2 :(得分:0)

要进一步了解@ max的答案,您也很可能希望将滚动视图的clipsToBounds属性设置为NO。