(一〇九)UIButton的使用技巧 -imageView、titleLabel、圆角等

UIButton是一个常用控件,使用方法十分基本,但是有很多技巧常常不被注意,本文主要介绍UIButton的一些较高级技巧,用于实现图片和标签显示的美观性等。

开发时常常碰到按钮的下侧或者右侧有标题的情况,如下图所示:

 

左侧的是上下结构,右侧的是左右结构,要实现这两种显示,有两种方法。

【按钮的内部控件】

首先我们要了解按钮内部有imageView和titleLabel两个控件,按钮的内边距分为content(整体)、title(标题)、image(图片)三个,因此对于水平排布,可以通过内边距和修改控件坐标两种方式实现;而竖直排布只能通过修改坐标,因为UIButton默认的是水平排布。

①直接修改坐标实现水平和竖直排布:

 self.imageView.frame = CGRectMake(<#CGFloat x#>, <#CGFloat y#>, <#CGFloat width#>, <#CGFloat height#>);
 self.titleLabel.frame = CGRectMake(<#CGFloat x#>, <#CGFloat y#>, <#CGFloat width#>, <#CGFloat height#>);

②通过内边距来修改:

 self.contentEdgeInsets = UIEdgeInsetsMake(<#CGFloat top#>, <#CGFloat left#>, <#CGFloat bottom#>, <#CGFloat right#>);
 self.titleEdgeInsets = UIEdgeInsetsMake(<#CGFloat top#>, <#CGFloat left#>, <#CGFloat bottom#>, <#CGFloat right#>);
 self.imageEdgeInsets = UIEdgeInsetsMake(<#CGFloat top#>, <#CGFloat left#>, <#CGFloat bottom#>, <#CGFloat right#>);

注意:按钮的标题虽然是titleLabel显示的,但是修改按钮的标题要使用setTitle方法来设置按钮不同状态的标题,不要直接使用titleLabel修改。

【圆角的实现】

imageView的layer成员的cornerRadius属性可以设置圆角的大小:

self.imageView.layer.cornerRadius = 10;

【多个按钮共用高亮图片】

有时候多个按钮虽然内容不同,但是高亮方式应该是一样的,这时候可以通过修改背景来实现高亮的效果,同时禁止默认的渲染(内容变灰色),从而达到较好的效果:

首先是禁止渲染。

 self.adjustsImageWhenDisabled = NO;
 self.adjustsImageWhenHighlighted = NO;

然后是设置高亮背景

可以通过不同的逻辑,例如selected、enable等。

 [self setBackgroundImage:[UIImage imageNamed:@"tabbar_separate_selected_bg"] forState:UIControlStateDisabled];

版权声明:本文为博主原创文章,未经博主允许不得转载。

时间: 2024-10-11 02:58:30

(一〇九)UIButton的使用技巧 -imageView、titleLabel、圆角等的相关文章

学习笔记——Maven实战(九)打包的技巧

“打包“这个词听起来比较土,比较正式的说法应该是”构建项目软件包“,具体说就是将项目中的各种文件,比如源代码.编译生成的字节码.配置文件.文档,按照规范的格式生成归档,最常见的当然就是JAR包和WAR包了,复杂点的例子是Maven官方下载页面的分发包,它有自定义的格式,方便用户直接解压后就在命令行使用.作为一款”打包工具“,Maven自然有义务帮助用户创建各种各样的包,规范的JAR包和WAR包自然不再话下,略微复杂的自定义打包格式也必须支持,本文就介绍一些常用的打包案例以及相关的实现方式,除了前

NSMutableAttributedString---UIButton封装-自带imageview&amp;titlelabel

不知道大家有木有碰到下面这种图标,其实这种在iOS应用上是经常看到的,拿到这种样式的东西怎么做呢?封装,UIImageView+UILabel+UILabel加到UIButton上就可以了,但是这个局限性太大了,很多时候根本达不到那种效果,比如点击阴影,使用的流畅性!这时候我们就得想办法了,而最直接有效的办法就莫过于使用UIButton上自带的imageview&titlelabel做文章了.详情见代码,已经很详细!我的图片是56*56 @2x的,如果大小不同,再稍微调整,为了上传方便,我就用本

android如果给imageview做圆角,如果在原有的bitmap上加上一些修饰的drawable

先上效果图: Layout文件: <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent"

UIButton如何正确调整imageView及titleLabel的位置

    一些开发者知道通过imageEdgeInsets及titleEdgeInsets 可以调整imageView及titleLabel的位置,但不知道如何正确计算,基本上都是通过多次调整相应的值达到期望的目标(次数过多可能会失去信 心),究其原因就是不能正确理解imageEdgeInsets及titleEdgeInsets. 下面步入主题. 如果button的bounds足够大(宽度至少是imageView宽度与titleLabel宽度之和,高度至少为imageView高度与titleLab

AngularJS进阶(二十九)AngularJS项目开发技巧之localStorage存储

AngularJS项目开发技巧之localStorage存储 绪 项目开发完毕,测试阶段发现后台管理端二维码生成有问题,问题在于localStorage的存储.如下图左所示,二维码生成完毕包含信息如下图左所示,实际二维码信息如下图右所示: 经过测试发现二维码实际存储的是上一次的结果.好熟悉~Bingo,自己做导航栏高亮时就遇到过这个问题,当时就是使用的localStorage.问题还是出在localStorage身上.但是存储时:localStorage.setItem(key,value),如

【技术干货】听阿里云CDN安防技术专家金九讲SystemTap使用技巧

1.简介 SystemTap是一个Linux非常有用的调试(跟踪/探测)工具,常用于Linux 内核或者应用程序的信息采集,比如:获取一个函数里面运行时的变 量.调用堆栈,甚至可以直接修改变量的值,对诊断性能或功能问题非 常有帮助.SystemTap提供非常简单的命令行接口和很简洁的脚本语 言,以及非常丰富的tapset和例子. 2.何时使用 定位(内核)函数位置 查看函数被调用时的调用堆栈.局部变量.参数 查看函数指针变量实际指的是哪个函数 查看代码的执行轨迹(哪些行被执行了) 查看内核或者进

Loggly:提高ElasticSearch性能的九个高级配置技巧

Loggly日志管理服务在其很多核心功能里使用ElasticSearch作为搜索引擎.Jon Gifford在其文章“ElasticSearch vs Solr”中指出,日志管理领域对搜索技术有了更高的要求.总的来说,它必须能够: 可靠地进行大规模实时索引-对我们来说,每秒处理10万条以上日志数据: 高性能.可靠地处理同一索引上的高并发搜索请求. 当我们搭建Gen2日志管理服务时,我们对ElasticSearch的各项配置信息进行了反复研究,以便能获得索引和搜索的最高性能.不幸的是,这些配置项散

UIButton的一些技巧

1.预置按钮类型 sdk提供了5个预置按钮类型:Detail Disclosure,Info Light,Info Dark,Contact Add,Rounded Rectangle.它们添加到sdk中首先是为了方便苹果公司自己. 构造方式:[UIButton buttonWithType:UIButtonTypeContactAdd]; 2.显示系统私有UIButton风格 指定 值为100 以上的UIButton的buttonWithType可以得到非公开的按钮风格,像红色按钮,黑色按钮,

能够让你提升的九个 Python 小技巧

一.列表推导式 你有一个list: bag = [1, 2, 3, 4, 5] 现在你想让所有元素翻倍,让它看起来是这个样子: [2, 4, 6, 8, 10] 大多初学者,根据之前语言的经验会大概这样来做. bag = [1, 2, 3, 4, 5] for i in range(len(bag)): bag[i] = bag[i] * 2但是有更好的方法: bag = [elem * 2 for elem in bag]很简洁对不对?这叫做Python的列表推导式 . 二.遍历列表 还是上面