在iOS中使用button进行水平滚动

我已经实现了button的水平滚动,但似乎只有5秒后才开始滚动。 它卡住了。 用户界面正在被阻止,我猜。

我有以下代码来创build在我的ViewDidLoad()

  UIScrollView *scrollView = [[UIScrollView alloc] initWithFrame:CGRectMake(0,self.view.frame.size.height-100, self.view.frame.size.width, 100)]; int x = 10; for (int i = 0; i < 10; i++) { UIButton *button = [[UIButton alloc] initWithFrame:CGRectMake(x,10,80,80)]; [button setTitle:[NSString stringWithFormat:@"Button %d", i] forState:UIControlStateNormal]; [button setTag:i]; [button setBackgroundColor:[UIColor greenColor]]; [button addTarget:self action:@selector(onClickofFilter:) forControlEvents:UIControlEventTouchUpInside]; [scrollView addSubview:button]; x += button.frame.size.width+10; } scrollView.contentSize = CGSizeMake(x, scrollView.frame.size.height); scrollView.backgroundColor = [UIColor redColor]; [self.view addSubview:scrollView]; 

显示一排红色背景上的绿色按钮的图像。

有什么办法可以使它平滑吗?

请检查以下代码:

  UIScrollView *scrollView = [[UIScrollView alloc] initWithFrame:CGRectMake(0, 0, self.view.frame.size.width, 100)]; int x = 0; CGRect frame; for (int i = 0; i < 10; i++) { UIButton *button = [UIButton buttonWithType:UIButtonTypeRoundedRect]; if (i == 0) { frame = CGRectMake(10, 10, 80, 80); } else { frame = CGRectMake((i * 80) + (i*20) + 10, 10, 80, 80); } button.frame = frame; [button setTitle:[NSString stringWithFormat:@"Button %d", i] forState:UIControlStateNormal]; [button setTag:i]; [button setBackgroundColor:[UIColor greenColor]]; [button addTarget:self action:@selector(onClickofFilter:) forControlEvents:UIControlEventTouchUpInside]; [scrollView addSubview:button]; if (i == 9) { x = CGRectGetMaxX(button.frame); } } scrollView.contentSize = CGSizeMake(x, scrollView.frame.size.height); scrollView.backgroundColor = [UIColor redColor]; [self.view addSubview:scrollView]; 

这里是一个类似的代码在迅速2.2版本供参考。

  let scrollView = UIScrollView(frame: CGRectMake(self.view.frame.origin.x,self.view.frame.origin.y,self.view.frame.width,35)) var x = 0 var frame : CGRect? for i in 0..<7 { let button = UIButton(type: .Custom) if i == 0 { frame = CGRectMake(10, 5, 80, 20) }else{ frame = CGRectMake(CGFloat(i * 120), 5, 80, 20) } button.frame = frame! button.tag = i button.backgroundColor = UIColor.clearColor() button.addTarget(self, action: #selector(ProgramacioViewController.changeContentOnButtonSelection(_:)), forControlEvents: .TouchUpInside) scrollView.addSubview(button) } scrollView.contentSize = CGSizeMake( 840, scrollView.frame.size.height) scrollView.backgroundColor = UIColor.clearColor() self.view.addSubview(scrollView) 
  UIScrollView *scrollView = [[UIScrollView alloc] initWithFrame:CGRectMake(0, 0, self.view.frame.size.width, 100)]; int x = 0; NSUInteger value= [userInfo count]; for (int i = 0; i < value; i++) { UIButton *button = [UIButton buttonWithType:UIButtonTypeRoundedRect]; button.titleLabel.textAlignment = UITextAlignmentCenter; [button setFont:[UIFont fontWithName:@"Lato-Medium" size:12]]; button.layer.borderWidth = 1.0f; button.layer.cornerRadius = 10; button.layer.borderColor = [UIColor whiteColor].CGColor; button.clipsToBounds = YES; [button setTitle:[NSString stringWithFormat:@"%d",i] forState:UIControlStateNormal]; [button setTag:i]; [button setTitleColor:[UIColor whiteColor] forState:UIControlStateNormal]; [button setBackgroundColor:[UIColor clearColor]]; button.titleLabel.lineBreakMode = NSLineBreakByWordWrapping; button.titleLabel.textAlignment = NSTextAlignmentCenter; [button addTarget:self action:@selector(onClickSwipeButton:) forControlEvents:UIControlEventTouchUpInside]; button.frame = CGRectMake((i * 100) + (i*10) + 10, 0, 100, 35); button.tag = i; x = CGRectGetMaxX(button.frame); [scrollView addSubview:button]; } scrollView.contentSize = CGSizeMake(x, scrollView.frame.size.height); scrollView.backgroundColor = [UIColor clearColor]; [self.randomView addSubview:scrollView];