UIButton中设置Titl方法包括以下几种:

- (void)setTitle:(NSString *)title forState:(UIControlState)state;        

- (void)setAttributedTitle:(NSAttributedString *)title forState:(UIControlState)state               

@property(nonatomic,readonly,retain) NSString *currentTitle;             

@property(nonatomic,readonly,retain) UILabel     *titleLabel;

在定义UIButton的时候,经常会使用titleLabel.text设置UIButton的值,但是Run出来确啥都没显示,不起作用啊!!!,这是怎么会事?难道是API的bug??

1.其实不是,正常使用UIButton的时候设置Title是要对应Button的ControlState,因为UIButton继承于UIControl,在设置值得时候需要对象状态,所以一般都会用

setTitle:(NSString *)title forState:(UIControlState)state 设置 Title;

2.setAttributedTitle是iOS6之后的方法,使用起来很简单,没特色说明。实例如下:

 [uibutton setAttributedTitle:[[NSAttributedString alloc]initWithString:@""] forState:UIControlStateNormal];

3.对应的currentTitle 也就是/normal/highlighted/selected/disabled状态下的title值,属性为readOnly;

4.至于titleLabel是设置的时候为啥不显示,比较神奇。查了官方文档以后才发现,真正的原因再于:(以下是我使用UIButton打印titleLabel对象的结果)

po uibutton.titleLabel
<UIButtonLabel: 0x7575800; frame = ( ; ); text = ''; clipsToBounds = YES; hidden = YES; opaque = NO; userInteractionEnabled = NO; layer = <CALayer: 0x7572980>>

看到这里你明白了吗?

默认UIButton的titleLable是没设置frame的,而且hidden=YES;只要你设置这2个值就可以正常显示,

无论你采用何种方式生产UIButton:

 UIButton *uibtn = [[UIButton alloc]initWithFrame:CGRectMake(, , , )]; 

否者  

UIButton *uibtn = [UIButton buttonWithType:UIButtonTypeCustom]; [uibtn setFrame:CGRectMake(0, 100, 100, 30)];

都一样;

总之,上面是我遇到过2次使用titleLabel不显示的总结,希望对以后有帮助。推荐使用第一种方式设置title不会遇到那么多麻烦。。。

iOS 中UIButton的 settitle 和 titlelabel的使用误区的更多相关文章

  1. iOS学习-UIButton的imageView和titleLabel

    UIButton的imageView和titleLabel的位置设置通过setImageEdgeInsets和setTitleEdgeInsets来设置 参考:http://blog.csdn.net ...

  2. iOS中UIButton控件的用法及部分参数解释

    在UI控件中UIButton是极其常用的一类控件,它的类对象创建与大多数UI控件使用实例方法init创建不同,通常使用类方法创建: + (id)buttonWithType:(UIButtonType ...

  3. iOS 对UIButton的imageView和titleLabel进行重新布局

    #import <UIKit/UIKit.h> @interface AppDelegate : UIResponder <UIApplicationDelegate> @pr ...

  4. ios中UIButton选中状态切换

    关于UIButton的事件枚举有许多,平时用的少所以很多的都不是很清楚,今天了解了下,看了以前的代码,觉得在UIButton选中时操作写了许多冗余代码,而忽略了UIButton一个很重要的属性,如下: ...

  5. IOS中UIButton和UIImageView的区别

    1.使用场合 UIImageView:如果仅仅是为了显示图片,不需要监听图片的点击事件 UIButton:既要显示图片,又要监听图片等点击事件 2.相同点 都能显示图片 3.不同点 UIButton能 ...

  6. iOS中的存储方式

    1.Plist 1.1 了解沙盒 每个iOS应用都有自己的应用沙盒(应用沙盒就是文件系统目录),与其它文件系统隔离.应用必须呆在自己的沙盒里.其它应用不能访问该沙盒. 一个程序中所有的非代码文件都可以 ...

  7. iOS中JS 与OC的交互(JavaScriptCore.framework)

    iOS中实现js与oc的交互,目前网上也有不少流行的开源解决方案: 如:react native 当然一些轻量级的任务使用系统提供的UIWebView 以及JavaScriptCore.framewo ...

  8. IOS中的多线程之GCD

    在ios中,使用多线程有三种方式,分别是:NSThread.NSOperation和NSOperationQueue.GCD,在本节,主要讲解一下CDD的使用. GCD(Grand Central D ...

  9. ios中addtarget

    Target-action:目标-动作模式,它贯穿于iOS开发始终.但是对于初学者来说,还是被这种模式搞得一头雾水. 其实Target-action模式很简单,就是当某个事件发生时,调用那个对象中的那 ...

随机推荐

  1. 打印机C++

    m_prnDC.SetMapMode(MM_LOMETRIC);  m_iPrnX = m_prnDC.GetDeviceCaps(HORZRES);m_iPrnY = m_prnDC.GetDevi ...

  2. [转] POJ DP问题

    列表一:经典题目题号:容易: 1018, 1050, 1083, 1088, 1125, 1143, 1157, 1163, 1178, 1179, 1189, 1191,1208, 1276, 13 ...

  3. 移动金融APP分析

    最近研究了移动互联网金融APP的情况,分享给大家. 这是官方关于互联网金融的范围,包括支付.借贷.众筹.基金.保险和信托. 典型的APP 绑卡的流程普遍采用的四要素鉴权:姓名,身份证,卡号以及银行预留 ...

  4. python numpy array 的一些问题

    1 将list转换成array 如果list的嵌套数组是不规整的,如 a = [[1,2], [3,4,5]] 则a = numpy.array(a)之后 a的type是ndarray,但是a中得元素 ...

  5. linux上改变mysql数据文件的位置

    用软连接改变了/var/lib/mysql的位置,并设置好mysql.mysql的权限,但是发现还是不能启动. 发现/var/log/mysqld.log 150308 16:16:02 [Warni ...

  6. lseek()函数

    lseek()有个特殊的用途,确定文件是常规文件还是设备.<pre lang="c" escaped="true">off_t currpos;ou ...

  7. 【Unity3D】模仿制作“神庙逃亡”吃金币后金币飞出屏幕效果

    [前言] 玩过“神庙逃亡”的应该都知道,这款游戏不论从游戏流畅度.人物动画.场景的管理都很棒. 自己也做了一款简单的跑酷游戏,实现了简单的吃金币效果,但是发现不好看,于是就想模仿“神庙逃亡”中的这个效 ...

  8. Android 高仿UC浏览器监控剪切板弹出悬浮窗功能

    UC浏览器应该是android手机里 最流行的浏览器之一了,他们有一个功能 相信大家都体验过,就是如果你复制了什么文字,(在其他app中 复制也有这个效果!,所以能猜到肯定是监控了剪切板),就会弹出一 ...

  9. 【转】Xcode的Architecture参数的意思

    iOS的App现在基本都是用llvm在编译,Xcode也提供了各种设置帮助你进行编译参数的设定.里面有一项就是设定编译的体系结构,涉及到的参数包括:Architectures.Valid Archit ...

  10. linux 开机自动启动脚本方法

    通过现场对这次天津iptv demo项目的调测.对iptv这套系统有了更好的认识和理解.由于iptv本身需要安装许多服务.而现场实施中有没有把这些需要启动服务的脚本加入到开 机自动运行中.如果服务器重 ...