如何动态增加按钮宽度取决于iPhone中的文字大小?

Pug*_*gal 4 iphone dynamic width uibutton

我以编程方式创建了10个按钮,并在按钮中设置了标题.现在我想动态增加按钮框架大小,它取决于文本.

我给出了一些条件并设置了帧大小.但是我如何设置确切的帧大小取决于文本(动态获取文本).

这是我的示例代码,

     float x=0, y=0, w, h=20;

    for(int i = 100; i < 110; i++)
     {
         btn = [[UIButton buttonWithType:UIButtonTypeRoundedRect] retain];

         UIImage * img = [UIImage imageNamed:@"Round_Rect4.png"];

        [btn setBackgroundImage:img forState:UIControlStateSelected];

        titleString = [titleArray objectAtIndex:i-100];  // get button title

        if([titleString length] <= 5)
        {
            w = 50;
            btn.frame = CGRectMake(x,y,w,h); 

            x = x + 70;
        }

        if (([titleString length] >= 6) && ([titleString length] <=10))
       {
             w = 70;

             btn.frame = CGRectMake(x,y,w,h); 

             x = x + 90;
       } 

       if(([titleString length] >= 11) && ([titleString length] <=15))
       {
             w = 105;
             btn.frame = CGRectMake(x,y,w,h); 

             x = x + 120;

       }

       if([titleString length] >= 16)
       {
             w = 120;
             btn.frame = CGRectMake(x,y,w,h); 

             x = x + 140;

       }

        [btn setTitle:titleString forState: UIControlStateNormal];

        [btn setTag:i];

        [self.view addSubview:btn];
Run Code Online (Sandbox Code Playgroud)

}

看到示例图片,

image-2 http://www.freeimagehosting.net/uploads/b6e0f234dc.png image-1 http://www.freeimagehosting.net/uploads/6b3daab12f.png

那么这可以设置确切的按钮框架大小,这取决于文本吗?plz指导我.

谢谢

tc.*_*tc. 14

[btn sizeToFit]
Run Code Online (Sandbox Code Playgroud)

  • 没有; 你必须自己做 - 比如`btn.contentEdgeInsets =(UIEdgeInsets){.left = 8,.right = 8} (4认同)

Pug*_*gal 7

我得到了答案,我的工作代码是,

        float x=0;

        for(int i = 100; i < 110; i++)
         {
             btn = [[UIButton buttonWithType:UIButtonTypeRoundedRect] retain];

             UIImage * img = [UIImage imageNamed:@"Round_Rect4.png"];

            [btn setBackgroundImage:img forState:UIControlStateSelected];

            titleString = [titleArray objectAtIndex:i-100];  // get button title

           CGSize fontSize = [titleString sizeWithFont:[UIFont systemFontOfSize:12.0]];

            CGRect currentFrame = btn.frame;

            CGRect buttonFrame = CGRectMake(x, currentFrame.origin.y, fontSize.width + 22.0, fontSize.height + 12.0);

           [btn setFrame:buttonFrame];

            x = x + fontSize.width + 35.0;

            [btn setTitle:titleString forState: UIControlStateNormal];

            [btn setTag:i];

            [self.view addSubview:btn];

}
Run Code Online (Sandbox Code Playgroud)