枚举 UIButton补充
一、URL
1.什么是URL?
URL是某个资源的唯一路径,通过这个路径就能访问对应的资源
2.URL的组成
协议头://全路径
* 协议头就代表资源的类型,比如http代表网络服务器资源,ftp代表ftp文件服务器资源,file代表本地资源
3.举例
http://www.baidu.com
http://www.sina.com/a.jpg
ftp://192.168.3.251/abc.mp4
file:///Users/apple/Desktop/abc.txt
4.获得项目中某个文件的资源路径(URL)
NSURL *url = [[NSBundle mainBundle] URLForResource:@"messages.plist" withExtension:nil];
5.将字符串路径转成URL
NSURL *url1 = [NSURL URLWithString:@"http://www.baidu.com"];
NSURL *url2 = [NSURL URLWithString:@"file:///Users/apple/Desktop/abc.txt"];
NSURL *url3 = [NSURL fileURLWithPath:@"/Users/apple/Desktop/abc.txt"];
6.转码
如果路径中包含了中文,需要进行UTF-8转码
// 1.文件URL路径字符串
NSString *path = @"file:///Users/apple/Desktop/哈哈.txt";
// 2.将中文进行转码(UTF-8),返回转码后的字符串
// 转码后path变成了:file:///Users/apple/Desktop/%E5%93%88%E5%93%88.txt
path = [path stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding];
// 3.生成URL
NSURL *url = [NSURL URLWithString:path];
二、开发规范
1.枚举
1> 当某个属性的值只有固定的几个取值时,应该用枚举
2> 枚举常量名以 “枚举类型名” 开头或者以 ”k + 枚举类型名“ 开头
* 比如
typedefenum {
MessageTypeMe = 0, // 我发的
MessageTypeOther = 1 // 别人发的
} MessageType;
* 或者
typedefenum {
kMessageTypeMe = 0, // 我发的
kMessageTypeOther = 1 // 别人发的
} MessageType;
2.readonly
如果某个属性的值只在类的内部修改\赋值,外界不需要修改\赋值、也不允许修改\赋值,尽量加上readonly关键字
三、UIButton
1.内部结构
1> UIButton内部默认有个UIImageView、UILabel控件,可以分别用下面属性访问:
@property(nonatomic,readonly,retain) UIImageView *imageView;
@property(nonatomic,readonly,retain) UILabel *titleLabel;
2> UIButton之所以能显示文字,完全是因为它内部的titleLabel
也就是说,UIButton的setTitle:forState:方法设置的字符串就是显示到了titleLabel上
3> UIButton的setImage:forState:方法设置的图片显示到了内部的imageView上
4> 注意
* 设置按钮的文字或文字颜色,必须用下面的方法
- (void)setTitle:(NSString *)title forState:(UIControlState)state;
- (void)setTitleColor:(UIColor *)color forState:(UIControlState)state;
#warnning 不能直接拿到titleLabel设置文字和文字颜色,比如下面的做法是错误的:
button.titleLabel.text = @"12323";
button.titleLabel.textColor = [UIColor redColor];
* 设置按钮内部的小图片,必须用下面的方法
- (void)setImage:(UIImage *)image forState:(UIControlState)state;
#warnning 不能直接拿到imageView设置图片,比如下面的做法是错误的:
button.imageView.image = [UIImage imageNamed:@"abc.png"];
2.其他设置
1> 设置按钮的文字自动换行
button.titleLabel.numberOfLines = 0;
2> 设置按钮的文字字体
button.titleLabel.font = [UIFont systemFontOfSize:16];
3> 设置按钮周边有多少区域不显示内容(不显示里面的小图片和文字)
// 顶部 10,左边 20,底部 10,右边 20
button.contentEdgeInsets = UIEdgeInsetsMake(10, 20, 10, 20);
四、图片拉伸
1.iOS 5.0之前的做法
- (UIImage *)stretchableImageWithLeftCapWidth:(NSInteger)leftCapWidth topCapHeight:(NSInteger)topCapHeight;
2.iOS 5.0的做法
- (UIImage *)resizableImageWithCapInsets:(UIEdgeInsets)capInsets;
3.iOS 6.0的做法
- (UIImage *)resizableImageWithCapInsets:(UIEdgeInsets)capInsets resizingMode:(UIImageResizingMode)resizingMode;
五、封装思想
1.如果有一段代码具备以下属性,应该抽到一个单独的类或者分类中:
1> 功能性:用来实现某个独立的功能
2> 工具性:简单易用实用
3> 全局性:整个项目中到处都用到这个功能
2.究竟这段功能代码抽到哪一个类或者分类,就看这个功能主要用到哪个类的方法\API,哪个类最清楚这个功能怎么实现
* 比如返回拉伸好图片的功能应该放在UIImage的分类中
枚举 UIButton补充的更多相关文章
- C#图解教程 第十一章 枚举
枚举 枚举 设置底层类型和显式值隐式成员编号 位标志 Flags特性使用位标志的示例 关于枚举的补充 枚举 枚举 枚举是由程序员定义的类型与类或结构一样. 与结构一样,枚举是值类型,因此直接存储它们的 ...
- Java研究
Strap 箱线图 峰度 随机过程 马尔科夫 超几何分布 贝叶斯公式 随机变量 德摩根 功率谱 残差 吸收壁 平稳随机 chorst 深入JVM OSGI ...
- for循环枚举法,全排列+dfs,补充浮点数注意事项
其实这个题目我一直没想好应该叫什么,就是在做蓝桥杯的时候会遇到很多的题,给你一等式,abcdef...分别是1-9(||12||15)不重复问你有几种方案? 我之前一直都是用的for循环在做,听说这叫 ...
- NX二次开发-Block UI C++界面Enumeration(枚举)控件的获取(持续补充)
NX9+VS2012 public: void SetBlockUIShow(); void EnumInt::SetBlockUIShow() { //获取枚举控件 PropertyList* En ...
- IOS UIButton 自定义的补充学习
一直自定按钮 遇到两个做的不好的地方. 1 是按钮响应方法时候状态自定义不好看 按压感不明显 2 是button上的title 是我自己用label写上去的 而不是用button的属性 这两天终于运用 ...
- IOS UI-Button按钮
#import "ViewController.h" @interface ViewController () { UILabel *lable; BOOL moveFlag; N ...
- 编写高质量代码:改善Java程序的151个建议(第6章:枚举和注解___建议88~92)
建议88:用枚举实现工厂方法模式更简洁 工厂方法模式(Factory Method Pattern)是" 创建对象的接口,让子类决定实例化哪一个类,并使一个类的实例化延迟到其它子类" ...
- 4. UIButton的使用
1. UIButton的初认识 来自:http://www.cnblogs.com/mcj-coding/p/5103891.html QQ:853740091 1.1 UIButton 是iOS 开 ...
- Map以及Set的遍历(EntrySet方法,补充enumeration和Iterator的区别)
public void mearge(Map map) { Map returnMap = new HashMap<>(); // 转换为Entry Set<Map.Entry< ...
随机推荐
- MVC下判断用户登录和授权状态方法
MVC下判断用户登录和授权状态方法 在我们日常开发的绝大多数系统中,都涉及到管理用户的登录和授权问题.登录功能(Authentication),针对于所有用户都开放:而授权(Authorization ...
- /dev/shm(转)
引用网上:/dev/shm首先可以看出来/dev/shm是一个设备文件, 可以把/dev/shm看作是系统内存的入口, 可以把它看做是一块物理存储设备,一个tmp filesystem, 你可以通过这 ...
- Windowsport80解决方案被占用
今天,在一个非常沮丧的实施Server什么时候,一个错误port80占用.因此,找到一种方法来解决各类.最后,我的解决方案列出的问题来,要遇到的人做一些参考同样的问题. 第一步,找出哪些程序正在使用p ...
- hdu4888 Redraw Beautiful Drawings
14更多学校的第二个问题 网络流量 分别以行,列作为结点建图 i行表示的结点到j列表示的结点的流量便是(i, j)的值 跑遍最大流 若满流了便是有解 推断是否unique 就是在残余网络 ...
- Android开发学习总结(五)——Android应用目录结构分析(转)
一.手动创建android项目 手动创建一个Android项目,命名为HelloWorld,命令如下: android create project -n HelloWorld -t 1 -p E:/ ...
- js便签笔记(13)——jsonp事实上非常easy【ajax跨域请求】
前两天被问到ajax跨域怎样解决,还真被问住了,光知道有个什么jsonp,迷迷糊糊的没有说上来.抱着有问题必须解决的态度,我看了很多资料,原来如此.. . 为何一直知道jsonp,但一直迷迷糊糊的不明 ...
- datatable1.9 与datatable1.10以数据差异
我还探讨datatable1.10新用途,如果在下面的代码中的错误,欢迎.. 1.10与1.9解释官方网站之间的差异:http://www.datatables.net/upgrade/1.10 看代 ...
- Cocos2d-x Auto-batching 浅浅的”深入分析”
Auto-batching是Cocos2d-x3.0新增的特性,目的是为了代替SpriteBatchNode,完毕渲染的批处理,提高绘制效率. 至于它有什么特点,能够看看官方文档,这里主要想探讨Aut ...
- Repository、IUnitOfWork 和 IDbContext 的实践
Repository.IUnitOfWork 和 IDbContext 的实践 好久没写 DDD 领域驱动设计相关的文章了,嘎嘎!!! 这几天在开发一个新的项目,虽然不是基于领域驱动设计的,但我想把 ...
- SQL入门学习3-数据更新
4-1 数据的插入(INSERT语句的使用方法) 使用INSERT语句可以向表中插入数据(行).原则上,INSERT语句背刺执行一行数据插入. CREATE TABLE 和INSERT 语句,都可以设 ...