UIButton中显示的图片和标题位置的设置

来源:互联网 发布:微信第三方平台源码 编辑:程序博客网 时间:2024/05/21 10:33

     button应该说大家都很熟悉,在初学的时候,咱们常常会发现一个问题:在设置image的时候如果同时设置title,则”不能“同时显示出来,除非设置BKimage。那么这是怎么回事呢,下面我们一起做如下测试:

我现在随意截取一张img,如下是图片的原图,


获取到他的高度和宽度:

     UIImage *img = [UIImageimageNamed:@"1"];

    CGFloat wide =CGImageGetWidth(img.CGImage);//img的宽度

        CGFloat height = CGImageGetHeight(img.CGImage);//img的宽度

    NSLog(@"w:%.2f  h:%.2f",wide,height);

得到图片的宽高分别是:158和112。

情况一:我在按钮上设置img和title,并且按钮的宽度小于img的宽度:

//代码如下:

UIButton *button = [UIButtonbuttonWithType:UIButtonTypeCustom];

    button.frame = CGRectMake(120,220,100, 90);

    button.backgroundColor = [UIColorredColor];

    button.imageEdgeInsets = UIEdgeInsetsMake(0, 0, 9, 0);

    [button setImage:img forState:UIControlStateNormal];

    [button setTitle:@"这是一个标题"forState:UIControlStateNormal];

    [self.view addSubview:button];

得到的图片结果如下:


咱们不难发现图片被压缩了,当然title也没有显示

情况二:按钮的宽度稍大img的宽度

button.frame =CGRectMake(120,220,220,90);

出现的结果如下:


此时图片按照原来的大小显示,但是标题没有显示全,那么咱们应该知道以前为什么说设置了图片和title为什么不会同时显示了,咱们如果将button的宽度设置的足够大(button的宽度>=img的宽度+title的宽度)则img和标题完全可以都显示。

情况三:button的宽度>=img的宽度+title的宽度

出现如下的情况:


标题和img都显示出来了,并且img显示在左侧,title显示在右侧,并且中间没有空隙。

至此也说明了其中的原由,那么如果我们想设置一种上侧显示img,下侧显示title的按钮,则这种样式是满足不了的,那么此时就用到UIEdgeInserts响应知识了。

0 0