详解iOS中UIButton的三大UIEdgeInsets属性用法

 更新时间:2016年04月25日 14:38:23   作者:李刚  
这篇文章主要介绍了iOS中UIButton的三大UIEdgeInsets属性用法,分别讲解了contentEdgeInsets、imageEdgeInsets和titleEdgeInsets三个属性在创建UIButton时对样式的控制,需要的朋友可以参考下

UIEdgeInsets是什么

UIEdgeInsets是什么?我们点进去看一下:

typedef struct UIEdgeInsets {
  CGFloat top, left, bottom, right; // specify amount to inset (positive) for each of the edges. values can be negative to 'outset'
} UIEdgeInsets;

UIEdgeInsets是个结构体类型。里面有四个参数,分别是:top, left, bottom, right。这四个参数表示距离上边界、左边界、下边界、右边界的距离。

哪三个UIEdgeInsets属性

不知道大家发现没有,UIButton里面有三个UIEdgeInsets属性,分别是:

@property(nonatomic)     UIEdgeInsets contentEdgeInsets UI_APPEARANCE_SELECTOR; // default is UIEdgeInsetsZero

@property(nonatomic)     UIEdgeInsets titleEdgeInsets;        // default is UIEdgeInsetsZero

@property(nonatomic)     UIEdgeInsets imageEdgeInsets;        // default is UIEdgeInsetsZero

contentEdgeInsets后面有个UI_APPEARANCE_SELECTOR是什么意思呢?

提示:UI_APPEARANCE_SELECTOR标记的属性都支持通过外观代理来定制。
举例,设置UIButton的contentEdgeInsets属性,可以直接调用:

[[UIButton appearance] setTitleEdgeInsets:UIEdgeInsetsMake(0, 0, 0, 0)];

创建UIButton:

UIButton *button = [[UIButton alloc] init];
button.frame = CGRectMake(50, 200, 200, 50);
[button setTitle:@"我是UIButton" forState:UIControlStateNormal];
[button setTitleColor:[UIColor blueColor] forState:UIControlStateNormal];
[button setBackgroundColor:[UIColor orangeColor]];
button.titleLabel.textAlignment = NSTextAlignmentLeft;
button.contentHorizontalAlignment = UIControlContentHorizontalAlignmentLeft;
[self.view addSubview:button];

创建一个button,让button的title居左,以便观察:

2016425143210943.png (146×97)

UIButton的contentEdgeInsets属性

@property(nonatomic)     UIEdgeInsets contentEdgeInsets UI_APPEARANCE_SELECTOR; 

// default is UIEdgeInsetsZero

contentEdgeInsets里有一个content应该指的就是UIButton的title。

参数含义:

上面我们讲了UIEdgeInsets是个结构体类型。里面有四个参数,分别是:top, left, bottom, right。这四个参数表示距离上边界、左边界、下边界、右边界的距离。

这四个参数的值可以为正值,也可以为负值。拿left举例:

left = 10; //代表以当前位置为基准,向右移动10个像素
left = -10; //代表以当前位置为基准,向左移动10个像素

向右移动20个像素

button.contentEdgeInsets = UIEdgeInsetsMake(0, 20, 0, 0);

向右移动20个像素,left = 20,就可以了。

2016425143256442.png (154×80)

向左移动20个像素

button.contentEdgeInsets = UIEdgeInsetsMake(0, -20, 0, 0);

2016425143338999.png (146×80)

UIButton的titleEdgeInsets属性

titleEdgeInsets和contentEdgeInsets的作用差不多。我们及设置contentEdgeInsets,又设置titleEdgeInsets,会怎样呢?

button.titleEdgeInsets = UIEdgeInsetsMake(0, 20, 0, 0);
button.contentEdgeInsets = UIEdgeInsetsMake(0, 20 , 0, 0);

看一下效果:

2016425143400935.png (152×97)

UIButton的imageEdgeInsets属性

创建一个带照片的button:

UIButton *button = [[UIButton alloc] init];
button.frame = CGRectMake(50, 200, 200, 200);
[button setTitleColor:[UIColor blueColor] forState:UIControlStateNormal];
[button setBackgroundColor:[UIColor orangeColor]];
[button setImage:[UIImage imageNamed:@"test"] forState:UIControlStateNormal];
[self.view addSubview:button];

运行一下:

2016425143505909.png (169×161)

向右移动50个像素

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

看看效果:

2016425143526865.png (170×190)

向左移动50个像素

button.imageEdgeInsets = UIEdgeInsetsMake(0, -50, 0, 0);

看看效果:

2016425143547866.png (181×178)

大家可以自行设置其他三个参数看看效果是怎样的,自己动手便于理解。

相关文章

  • iOS中解决Xcode9的Log日志无法输出中文的问题小结

    iOS中解决Xcode9的Log日志无法输出中文的问题小结

    这篇文章主要介绍了iOS中解决Xcode9的Log日志无法输出中文的问题小结,需要的朋友可以参考下
    2017-11-11
  • 关于iOS 11不能定位问题的解决方法

    关于iOS 11不能定位问题的解决方法

    最近在开发中遇到一个问题,后来发现是苹果新增一个权限,自己可查,下面这篇文章主要给大家介绍了关于iOS 11不能定位问题的解决方法,文中介绍的非常详细,需要的朋友可以参考借鉴,下面随着小编来一起来一起学习学习吧。
    2017-11-11
  • UICollectionView 实现图片浏览效果

    UICollectionView 实现图片浏览效果

    这篇文章主要为大家介绍了UICollectionView 实现图片浏览效果示例,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2022-07-07
  • IOS图片无限轮播器的实现原理

    IOS图片无限轮播器的实现原理

    这篇文章主要介绍了IOS图片无限轮播器的实现原理的相关资料,需要的朋友可以参考下
    2016-03-03
  • iOS UITableView 拖动排序实现代码

    iOS UITableView 拖动排序实现代码

    这篇文章主要为大家详细介绍了iOS UITableView 拖动排序实现代码,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2016-09-09
  • iOS json解析出错的几种情况总结

    iOS json解析出错的几种情况总结

    这篇文章主要介绍了iOS json解析出错的几种情况总结的相关资料,需要的朋友可以参考下
    2017-01-01
  • UIScrollView实现六棱柱图片浏览效果

    UIScrollView实现六棱柱图片浏览效果

    这篇文章主要为大家介绍了UIScrollView实现六棱柱图片浏览效果示例详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2022-07-07
  • iOS开发之APP相关

    iOS开发之APP相关

    本文给大家介绍的是IOS开发系列文章的第一篇,给大家分享一些APP相关的知识点,非常的实用,有需要的小伙伴可以参考下
    2016-04-04
  • IOS UIView的生命周期的实例详解

    IOS UIView的生命周期的实例详解

    这篇文章主要介绍了IOS UIView的生命周期的实例详解的相关资料,希望通过本文大家能掌握理解这部分内容,需要的朋友可以参考下
    2017-09-09
  • iOS体验性优化之RTL适配右滑返回的实现

    iOS体验性优化之RTL适配右滑返回的实现

    这篇文章主要给大家介绍了关于iOS体验性优化之RTL适配右滑返回实现的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧。
    2018-01-01

最新评论