Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/http/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios UIScrollView滚动功能不工作?_Ios_Objective C_Iphone_Uiscrollview - Fatal编程技术网

Ios UIScrollView滚动功能不工作?

Ios UIScrollView滚动功能不工作?,ios,objective-c,iphone,uiscrollview,Ios,Objective C,Iphone,Uiscrollview,我是IOS应用程序开发的新手。我正在尝试实现一个scrollview。我根本无法滚动 下面是我对实现的看法。 我创建了一个滚动视图,并在其中添加了不同颜色的小块。 我在当前屏幕边界之外添加了一个块,以便向下滚动UIScrollView并查看它 @implementation CustomView - (instancetype)init { self = [super init]; if (self) { CGRect screenRect = CGRectMake(7

我是IOS应用程序开发的新手。我正在尝试实现一个scrollview。我根本无法滚动

下面是我对实现的看法。 我创建了一个滚动视图,并在其中添加了不同颜色的小块。 我在当前屏幕边界之外添加了一个块,以便向下滚动UIScrollView并查看它

@implementation CustomView

- (instancetype)init
{
    self = [super init];
    if (self) {
    CGRect screenRect = CGRectMake(70, 100, 250, 800);
    UIScrollView *scrollView = [[UIScrollView alloc] initWithFrame:screenRect];
    scrollView.scrollEnabled = YES;
    [scrollView setBackgroundColor:[UIColor yellowColor]];
    [scrollView setAlpha:0.2];
    [self addSubview:scrollView];

    CGRect temp = CGRectMake(100, 150, 10, 10);
    UIView *firstView = [[UIView alloc] initWithFrame:temp];
    [firstView setBackgroundColor:[UIColor redColor]];
    [scrollView addSubview:firstView];

    temp = CGRectMake(150, 200, 10, 10);
    UIView *secondView = [[UIView alloc] initWithFrame:temp];
    [secondView setBackgroundColor:[UIColor greenColor]];
    [scrollView addSubview:secondView];

    temp = CGRectMake(200, 750, 10, 10);
    UIView *thirdView = [[UIView alloc] initWithFrame:temp];
    [thirdView setBackgroundColor:[UIColor orangeColor]];
    [scrollView addSubview:thirdView];

    scrollView.contentSize = screenRect.size;
}
return self;
}
@end
我正在使用以前在视图控制器中创建的视图。我正在将其添加到视图控制器的视图中

@interface ViewController ()

@property (nonatomic, readonly) CustomView *currentView;

@end

@implementation ViewController

- (void)viewDidLoad {
[super viewDidLoad];

_currentView = [[CustomView alloc] init];
[self.view addSubview:_currentView];
}

- (void)didReceiveMemoryWarning {
[super didReceiveMemoryWarning];
// Dispose of any resources that can be recreated.
}
@end
我根本无法使用此实现滚动。我错过什么了吗? 有人能解释一下我的代码有什么问题吗


谢谢

首先,您要做的事情应该使用UITableView来完成。我不知道你为什么要这样做

无论如何,您是否也尝试设置UIScrollView的contentSize属性


您的滚动视图不会滚动,因为它的框架与内容大小一样大。在将scrollview添加为子视图之前,在视图控制器中添加此行:

_currentView.frame = self.view.bounds ;
contentSize属性不应该是屏幕的大小,如果希望滚动工作,它需要更大。您应该计算scrollView中内容的大小,例如所有子视图的组合高度和它们之间的空间,或者底部视图的最大值。
另外,尝试在iOS 9中使用UITableView或UIStackView来完成相同的行为,而不做任何数学运算

当您向屏幕添加滚动视图时,它应该是您希望在屏幕上显示的大小。只有当您查看它时,它才会以UIView的形式显示在屏幕上

UIScrollView *scrollView = [[UIScrollView alloc] initWithFrame: CGRectMake(20, 20, 250, 250)];
上述初始化将在位置20,20处提供大小为250X250的滚动视图

对于滚动,您需要定义滚动视图的内容大小。 此内容大小应大于您的scrollview大小,否则您将无法区分它。contentsize的大小应该根据要放入其中的内容来决定

例如,如果您在scrollview中添加的三个视图的总宽度为500,高度为300,则您的内容大小应仅等于该值

[scrollView setContentSize:CGSizeMake(500, 300)];
这将允许您在scrollview中滚动

此外,添加到scrollview的内容应考虑scrollview的左上角为0,0位置。 因此,如果您想在scrollView的左上角显示某些内容,那么该特定视图的框架尺寸应该如下所示

CGRectMake(0,0,30,30);
这将在scrollView的左上角添加一个大小为30X30的视图


希望有帮助。

滚动视图就是滚动视图。要在内容的不同位置插入三个视图,为什么说表视图更好?好吧,我错了。我应该更仔细地看一下坐标。我的意思是,当有人试图使用UIScrollView和自定义子视图创建行,试图以某种方式重新创建像UI这样的表视图时,我在其他地方看到过这种错误。将框架设置为当前视图边界没有帮助。它仍然不起作用,它起作用了。我已经测试过了。必须在[self.view addSubview:_currentView]之前插入该行;我已将contentSize设置为250*800 rect。contentSize高度800大于屏幕高度。