专栏名称: Adrenine
iOS开发
目录
相关文章推荐
小众软件  ·  另外两件事[250613] ·  2 天前  
小众软件  ·  重生!Alist ... ·  2 天前  
APPSO  ·  苹果内部消息曝光:AI Siri ... ·  2 天前  
51好读  ›  专栏  ›  Adrenine

iOS笔记之使用UIEdgeInsetsMake调整UIButton图片和标题位置

Adrenine  · 掘金  ·  · 2018-01-11 02:14

正文

请到「今天看啥」查看全文


right )

UIEdgeInsetsMake是一个用来描述内容物在包裹容器里面的内边距的一个结构体描述,用UIButton来举例,button里面的Image是内容物,button是包裹容器,可以用UIEdgeInsetsMake结构体来描述Image在button里面的内边距。 拿图“UIEdgeInsets”来说就是设置UIEdgeInsetsMake以后,Image的位置就是黑色虚线和白色虚线重合的中间区域。 这种理解有一个前提就是用来描述单独内容物,比如在UIButton里面你只设置了Image或者只设置了TitleLabel的时候,当同时设置了Image和TitleLabel的时候,会有一些差别,下面再说。

回到主题《UIButton的UIEdgeInsetsMake的使用》 这里主要是讲UIEdgeInsetsMake在UIButton上的应用,相信很多人都遇到了那种需求,就是原本button图片在左,title在右,很多时候确实也是这样,但是有时候需求可能是“图片在上,title在下”或者是“图片在右,title在左”,如下图所示:

原始按钮

修改后的按钮

这时候原来系统自带按钮就需要我们使用UIEdgeInsetsMake来进行设置了。上面说到内容物是单一的和多个的是不一样,不一样在哪?

对于设置了image和title的button,系统会在设置以后自动设置一个合适的ImageEdgeInsets和TitleEdgeInsets

问:啥叫合适的? 答:你new一个button显示一下就会发现,他边距确实蛮合适的,虽然有时候title挤在一起显示不全,但是起码边距看上去蛮顺眼,所以我也不知道啥叫合适的,我只知道new一个button,设置了image和title以后,就会有一个默认的ImageEdgeInsets和TitleEdgeInsets。

下面我们在设置image和title之后,打印一下两者的边距:

//生成button
UIButton *button = [UIButton buttonWithType:UIButtonTypeCustom];
[button setTitle:@"这是一个按钮" forState:UIControlStateNormal];
[button setImage:[UIImage imageNamed:@"image"] forState:UIControlStateNormal];
button.frame = CGRectMake(100, 100, 160, 40);
button.backgroundColor = [UIColor redColor];
button.titleLabel.backgroundColor = [UIColor






请到「今天看啥」查看全文