滚动视图内容显示但不滚动

Posted

技术标签:

【中文标题】滚动视图内容显示但不滚动【英文标题】:Scrollview content shows but not scrolling 【发布时间】:2013-09-02 01:08:42 【问题描述】:

我有一个ViewController 和一个ScrollView,其中包含来自IB 的大量内容,但滚动视图不起作用。

- (void)viewDidLoad

    [super viewDidLoad];
/*
 *  configure a bunch of label, text ,images and views from IB
*/

    UIScrollView* scrollView = (UIScrollView*)self.view;
    scrollView.scrollEnabled = YES;
    scrollView.contentSize = CGSizeMake(320, 2000);

我可以看到我的内容直到底部,但无法滚动。如果它意味着什么,这个ViewControllerTabBar 中的一个选项卡中

【问题讨论】:

【参考方案1】:
    要让滚动视图滚动,其 Frame 大小必须小于其 Content Size 您已经以编程方式添加了 scrollView FROM 代码,但看起来您是在谈论通过 Xcode 的 Storyboard 或在 nib 文件中添加它 如果您正在添加它认为您需要添加以下代码的代码

[self.view addSubView:scrollView];

这是一个例子

@interface ImageScrollView ()
    @property (nonatomic, strong) UIScrollView *scrollView;
    @property (nonatomic, strong) UIPageControl *pageControl;
@end

-(void) baseInit 
    // Scroll View - Full frame width
    _scrollView = [[UIScrollView alloc] init];
    _scrollView.frame = self.frame;
    _scrollView.delegate = self;

    // ImageView - Full frame width
    CGFloat width = self.frame.size.width;
    CGFloat height = self.frame.size.height;

    int i = 0;
    int count = [imagesArray count];
    for (i = 0; i < count; i++) 
        UIImage *image = [UIImage imageNamed:imagesArray[i]];
        UIImageView *imageView = [[UIImageView alloc] initWithFrame:CGRectMake(i * width, 0, width, height)];
        [imageView setImage:image];
        imageView.contentMode = UIViewContentModeScaleAspectFill;
        imageView.clipsToBounds = YES;
        imageView.tag = i+1;
        [_scrollView addSubview:imageView];
    

    [_scrollView setContentSize:CGSizeMake(count * width,  height)];
    [_scrollView setFrame:CGRectMake(0, 0, width, height)];
    _scrollView.pagingEnabled = YES;
    _scrollView.showsHorizontalScrollIndicator = NO;

    pageControl.numberOfPages = count;
    pageControl.currentPage = 0;
     CGRect pageFrame = CGRectMake(5, 5, 50, 50);
    pageControl.frame = pageFrame;
    pageControl.backgroundColor = [UIColor redColor];

    [self addSubview:_scrollView];
    [_scrollView addSubview:pageControl];

不要忘记在您的视图中调用 baseInit 函数确实加载了。 此示例无需在 Storyboard 或 nib 文件中添加任何对象即可工作

【讨论】:

以上是关于滚动视图内容显示但不滚动的主要内容,如果未能解决你的问题,请参考以下文章

无法显示控件使用自动布局添加到滚动视图的内容视图中

iOS 滚动视图不起作用

滚动视图的水平居中内容

填充滚动视图但不压缩图像的图像

KIVY 滚动视图不会显示任何内容,只是一个空白屏幕

7.3 QScrollArea滚动视图