一、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补充的更多相关文章

  1. C#图解教程 第十一章 枚举

    枚举 枚举 设置底层类型和显式值隐式成员编号 位标志 Flags特性使用位标志的示例 关于枚举的补充 枚举 枚举 枚举是由程序员定义的类型与类或结构一样. 与结构一样,枚举是值类型,因此直接存储它们的 ...

  2. Java研究

    Strap   箱线图  峰度  随机过程  马尔科夫  超几何分布  贝叶斯公式 随机变量    德摩根   功率谱   残差  吸收壁   平稳随机    chorst 深入JVM OSGI    ...

  3. for循环枚举法,全排列+dfs,补充浮点数注意事项

    其实这个题目我一直没想好应该叫什么,就是在做蓝桥杯的时候会遇到很多的题,给你一等式,abcdef...分别是1-9(||12||15)不重复问你有几种方案? 我之前一直都是用的for循环在做,听说这叫 ...

  4. NX二次开发-Block UI C++界面Enumeration(枚举)控件的获取(持续补充)

    NX9+VS2012 public: void SetBlockUIShow(); void EnumInt::SetBlockUIShow() { //获取枚举控件 PropertyList* En ...

  5. IOS UIButton 自定义的补充学习

    一直自定按钮 遇到两个做的不好的地方. 1 是按钮响应方法时候状态自定义不好看 按压感不明显 2 是button上的title 是我自己用label写上去的 而不是用button的属性 这两天终于运用 ...

  6. IOS UI-Button按钮

    #import "ViewController.h" @interface ViewController () { UILabel *lable; BOOL moveFlag; N ...

  7. 编写高质量代码:改善Java程序的151个建议(第6章:枚举和注解___建议88~92)

    建议88:用枚举实现工厂方法模式更简洁 工厂方法模式(Factory Method Pattern)是" 创建对象的接口,让子类决定实例化哪一个类,并使一个类的实例化延迟到其它子类" ...

  8. 4. UIButton的使用

    1. UIButton的初认识 来自:http://www.cnblogs.com/mcj-coding/p/5103891.html QQ:853740091 1.1 UIButton 是iOS 开 ...

  9. Map以及Set的遍历(EntrySet方法,补充enumeration和Iterator的区别)

    public void mearge(Map map) { Map returnMap = new HashMap<>(); // 转换为Entry Set<Map.Entry< ...

随机推荐

  1. 算法 - 乞讨n中位数(C++)

    //************************************************************************************************** ...

  2. iOS_动态插入或删除行

    终于效果图: 分MVC三层设计;自己定义的Cell有两种;一种是MainCell,由ModelArr提供数据源;还有一种是插入的cell,由代码创建,而且由另外一个数组供状态数据 数据源部分: wat ...

  3. 摆弄【Nhibernate 协会制图--导乐陪伴分娩】

    现有两个实体,Dog和 Master,映射到数据库表中如上图所看到的.一个Dog仅仅同意相应一个Master,但一个Master能够有多个Dog.我们在查询Dog的时候.往往还须要知道其主人Maste ...

  4. design pattern Builder 生成器设计模式

    其实设计模式可以学习很有趣,你并不需要有这么难啃旱地FOG对我来说,当然,这些都是健康的骨骼啃啃. 在本文中,建造者模式设计一个搞笑的一幕.根据这一模型来学习功夫的方法,哈哈. 基类的第一,设计.那么 ...

  5. NBA球员 ESPN前20排名:詹姆斯再居榜首

    2014年 ESPN球员实力最后排名 没想到 保罗-乔治没有上榜.之前预測的火箭两大明星排名落后了,杜兰特排到第8有点出乎意料. 戴维斯升得那么快有点出乎意料,一个球队拥有两位排前十位的球队:骑士,快 ...

  6. 【转】Android 收集已发布程序的崩溃信息

    我们写程序的时候都希望能写出一个没有任何Bug的程序,期望在任何情况下都不会发生程序崩溃.不过理想是丰满的,现实是骨感的.没有一个程序员能保证自己写的程序绝对不会出现异常崩溃.特别是针对用户数达到几十 ...

  7. SQLServer数据类型优先级对性能的影响

    原文:SQLServer数据类型优先级对性能的影响 译自: http://www.mssqltips.com/sqlservertip/2749/sql-server-data-type-preced ...

  8. MySql分析算法作品索引(马上,只是说说而已B-tree)

    刚开始学习的时候,百度搜索.但我发现很难理解了很多的太复杂,各种物品的整合总结(建议可能看到的文字,我不明白也没关系,再看看操作步骤图,然后结合文,所以,一切都清楚了很多) B-tree.B这是bal ...

  9. [Network]Transport Layer

    1 Principles behind Transport Layer Services 1.1 Multiplexing/Demultiplexing Multiplexing at sender ...

  10. android变化HOLO对话风格

    andriod风修改对话框格,通过设置theme实现.一些要素需要通过Java代码更改,下面的对话框更改的步骤的例子称号. 1.写文本样式. DIALOG标题是textview,在sytles.xml ...