如何在无限按钮内添加标签?

时间:2015-09-22 07:01:45

标签: ios objective-c cgrect cgrectmake

这是我的代码:

-(void)scrollView
{
    NSInteger buttonCount = 0;
    NSInteger buttonSize = 0;
    int divisible= 0;
    buttonCount=[[arrFullSubCategory valueForKey:@"name"]count];
    if(buttonCount==2)
    {
        divisible = 2;
        buttonSize=self.view.frame.size.width/divisible;
    }
    else
    {
        divisible = 3;
        buttonSize=self.view.frame.size.width/divisible;
    }

    [viewBtnScroll addSubview:self.scrollViewBtn];
    for(int i=0;i<buttonCount;i++)
    {
        self.scrollViewBtn.scrollsToTop=YES;
        self.scrollViewBtn.directionalLockEnabled=YES;
        self.automaticallyAdjustsScrollViewInsets = NO;
        UIButton *btn;
        btn=[[UIButton alloc]initWithFrame:CGRectMake(buttonSize*i,0,buttonSize,self.scrollViewBtn.frame.size.height)];
        [btn setTitle:[NSString stringWithFormat:@"%@",[[arrFullSubCategory objectAtIndex:i] valueForKey:@"name"]] forState:UIControlStateNormal];

        btn.userInteractionEnabled=YES;
        NSInteger tag=[[[arrFullSubCategory valueForKey:@"category"] objectAtIndex:i] integerValue];
        [btn addTarget:self action:@selector(btnClicked:) forControlEvents:UIControlEventTouchUpInside];
        [btn setTag:tag];


 highLight=[[UILabel alloc]initWithFrame:CGRectMake(buttonSize*i,10,btn.frame.size.width,20)];
        highLight.backgroundColor=[UIColor greenColor];
        highLight.hidden=YES;
        [btn addSubview:highLight];
         [self.scrollViewBtn addSubview:btn];
        length = [[arrFullSubCategory valueForKey:@"name"] count];

    }

    self.scrollViewBtn.contentSize=CGSizeMake(buttonSize*buttonCount, self.scrollViewBtn.frame.size.height);
}

1.该按钮取决于即将到来的json值。

2.按屏幕尺寸计算按钮尺寸。

3.i由于某种原因创建了全局标签,并将其添加到按钮的子视图中,最初是隐藏,当按钮按下该特定按钮标签隐藏= NO;

4.我所做的一切都很完美,但我的问题是如何为特定标签提供x.origin?

5.从我的代码开始,标签只出现在按钮的末尾而不是全部。

6.如果我将x.origin设置为0,则仅将其设置为初始按钮[第一个按钮]。

7.滚动视图中存在该按钮.....

1 个答案:

答案 0 :(得分:0)

最简单的解决方案是

  1. 创建所需大小的新UIView(让它命名为MyView)。

  2. 创建所需尺寸的UILabel以及相对于MyView的x和y 并将其添加到MyView

  3. MyView添加到UIScrollView

  4. 然后创建与UIButton尺寸相同的MyView并将其添加到同一UIScrollView

  5. 重要的是,您可以在UIScrollView而不是MyView

    添加按钮

    你很高兴...希望这有帮助...

    =======编辑========根据需要使用代码

        float width = GridScrollView.frame.size.width;
        int i,k=0;
    
        for ( i= 0; i < imageArray.count; i+=4) {
    
            for (int j =0; j<4; j++) {
    
    
                if (i+j <nameArray.count) {
    
    
    
                    NSLog(@"i = %d    j = %d    k = %d",i,j,k);
                    UIActivityIndicatorView *spinner2 = [[UIActivityIndicatorView alloc]initWithFrame:CGRectMake((width/4)*j ,(width/4)*k , width/4, width/4)];
    
                    [spinner2 startAnimating];
                    [GridScrollView addSubview:spinner2];
                    UIView *gridBox = [[UIView alloc]initWithFrame:CGRectMake((width/4)*j ,(width/4)*k , width/4, width/4)];
                    //                            gridBox.backgroundColor=[UIColor whiteColor];
    
                    [GridScrollView addSubview:gridBox];
    
    
    
                    UIView *labelBack = [[UIView alloc]initWithFrame:CGRectMake((width/4)*j ,(width/4)*k , width/4, width/16)];
                    labelBack.backgroundColor=[UIColor blackColor];
                    labelBack.alpha=0.5;
    
                    [GridScrollView addSubview:labelBack];
    
    
                    UILabel *nameLabel = [[UILabel alloc]initWithFrame:CGRectMake((width/4)*j ,(width/4)*k , width/4, width/16)];
                    nameLabel.text=nameArray[i+j];
                    nameLabel.textAlignment = NSTextAlignmentCenter;
                    nameLabel.textColor=[UIColor whiteColor];
                    nameLabel.font=[UIFont fontWithName:@"Arial" size:12];
                    [GridScrollView addSubview:nameLabel];
    
    
                    UIButton *gridButton = [[UIButton alloc]initWithFrame:CGRectMake((width/4)*j ,(width/4)*k , width/4, width/4)];
                    [gridButton addTarget:self action:@selector(gridButtonTapped:) forControlEvents:UIControlEventTouchUpInside];
                    gridButton.tag=i+j;
                    [GridScrollView addSubview:gridButton];
    
    
    
                }
    
            } k++;
    
        }
        [GridScrollView setContentSize:CGSizeMake(width, (width/4)*(i/4))];
    
        [self.view addSubview:GridScrollView];