簡體   English   中英

iOS中帶有按鈕的水平滾動

[英]Horizontal scroll with buttons in iOS

我已經使用按鈕實現了以下水平滾動,但它似乎僅在 5 秒后開始滾動。 它卡住了。 UI 被阻塞了,我猜。

我有以下代碼在我的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];

在 Swift 4.2 中:

func addHorizontalTeamList() {

    let scrollView = UIScrollView(frame: CGRect(x: 0,y: 0, width: self.view.frame.width, height: 60))
    var frame : CGRect?

    for i in 0..<teamsCategory.count {
        let button = UIButton(type: .custom)
        if i == 0 {
            frame = CGRect(x: 10, y: 10, width: 130, height: 40)
        }else{
            frame = CGRect(x: CGFloat(i * 140), y: 10, width: 130, height: 40)
        }

        button.frame = frame!
        button.tag = i
        button.backgroundColor = .lightGray
        button.rounded(border: 0, radius: button.frame.height/2)
        button.addTarget(self, action: #selector(selectTeam), for: .touchUpInside)
        button.setTitle(teamsCategory[i].name, for: .normal)
        scrollView.addSubview(button)
    }

    scrollView.contentSize = CGSize( width: 840, height: scrollView.frame.size.height)
    scrollView.backgroundColor = .white
    self.view.addSubview(scrollView)
}

@objc func selectTeam() {

}

這是 swift 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];

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM