7

如果可能,我想从我的 UIScrollView 禁用垂直滚动.. 我的代码如下所示.. 工作正常,除了用户可以上下滚动我相信不应该存在.. 提前谢谢..

    UIScrollView *scroll = [[UIScrollView alloc] initWithFrame:CGRectMake(0, 100, self.view.frame.size.width, self.view.frame.size.height / 3)];   
    scroll.contentSize = CGSizeMake(scroll.contentSize.width,scroll.frame.size.height); 
    scroll.pagingEnabled = YES;
    scroll.backgroundColor = [UIColor blackColor];
    int xVal = 30;

    NSInteger numberOfViews = 5;
    for (int i = 0; i < numberOfViews; i++) {
        UILabel *testLabel1 = [[UILabel alloc] initWithFrame:CGRectMake(xVal, 0, 90, 100)];
        UILabel *testLabel2 = [[UILabel alloc] initWithFrame:CGRectMake(xVal, 20, 90, 100)];
        UILabel *testLabel3 = [[UILabel alloc] initWithFrame:CGRectMake(xVal, 40, 90, 100)];

        testLabel2.backgroundColor = [UIColor clearColor];
        testLabel2.text =@"Test1";
        testLabel2.textColor = [UIColor whiteColor];
        testLabel2.font = [UIFont boldSystemFontOfSize:12];

        testLabel1.backgroundColor = [UIColor clearColor];
        testLabel1.text =@"Test2";
        testLabel1.textColor = [UIColor whiteColor];
        testLabel1.font = [UIFont boldSystemFontOfSize:12];

        testLabel3.backgroundColor = [UIColor clearColor];
        testLabel3.text =@"Test3";
        testLabel3.textColor = [UIColor whiteColor];
        testLabel3.font = [UIFont boldSystemFontOfSize:12];

        xVal += 120;

        UIView *view = [[UIView alloc] initWithFrame:CGRectMake(xVal, 30, 150, 130)];
        view.backgroundColor = [UIColor blackColor];

        xVal += 200;

        [scroll addSubview:testLabel1];
        [scroll addSubview:testLabel2];
        [scroll addSubview:testLabel3];
        [scroll addSubview:view];
    }

    [self.view addSubview:scroll];
4

7 回答 7

21

在我的情况下,我无法获得滚动视图的高度(由于自动布局,我无法获得 viewDidLoad 中的高度)。您可以将其添加到委托方法中。

- (void)scrollViewDidScroll:(UIScrollView *)scrollView {
    self.scrollView.contentOffset = CGPointMake(self.scrollView.contentOffset.x, 0);
}
于 2013-07-05T05:08:03.680 回答
10

您必须将滚动视图内容高度设置为滚动视图高度

CGSize scrollableSize = CGSizeMake(scrollableWidth, yourScrollViewHeight);
[myScrollView setContentSize:scrollableSize];

于 2012-08-07T11:30:49.783 回答
4

这里可能有重复

在 UIScrollView 中禁用垂直滚动

或者你也可以试试这个:

self.scrollview.contentSize = CGSizeMake(self.scrollview.frame.size.width * number_of_items, 1);
于 2012-08-07T11:25:19.920 回答
1

假设它是一个 iPhone 应用程序,那么屏幕分辨率是320×480

现在您将滚动视图的高度设置为self.view.frame.size.height / 3. 在这里,您的视图高度实际上是460而不是480(状态栏为 20px)。

因此,当您将另一个视图作为子视图添加到滚动视图时,它的框架会超出滚动的内容视图。因此,您需要在设置框架/内容大小时对其进行管理。

让我知道这是否适合您。

于 2012-08-07T11:35:59.840 回答
0

没有问题,只需更改 UIScrollView 的 contentSize 即可。增加它的宽度大小和高度应该与现在一样。此外,您还可以隐藏垂直滚动条。

scroll.showsVerticalScrollIndicator = NO;
scroll.contentSize = CGSizeMake(scroll.contentSize.width + xVal,scroll.frame.size.height); 
于 2012-08-07T11:37:23.133 回答
0

你应该这样做:

aScrollView.scrollsToTop = NO;
aScrollView.delegate = self;
aScrollView.contentSize = CGSizeMake(aScrollView.frame.size.width * X, aScrollView.frame.size.height/2);
于 2012-08-16T02:38:42.640 回答
0

在您的 xml 文件中有两个可用于滚动视图的属性,即水平滚动和垂直滚动。根据您的要求,您可以选中或取消选中,如果要停止垂直或水平滚动,则必须分别使滚动视图的内容大小与滚动视图的高度或宽度相同

于 2015-10-06T13:32:02.363 回答