一、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. 让你提前知道软件开发(24):C语言和主要特征的历史

    文章1部分 再次了解C语言 C语言的发展历史和主要特点 作为一门众所周知的计算机编程语言,C语言是谁发明的呢?它是怎样演进的?它有何特点?究竟有多少人在使用它? 1. C语言之父 C语言是1972年由 ...

  2. uva 10831 - Gerg&#39;s Cake(勒让德符号)

    题目链接:uva 10831 - Gerg's Cake 题目大意:给定a和p.p为素数,问说是否存在x,使得x2≡a%p 解题思路:勒让德记号,推断ap−12≡1%p #include <cs ...

  3. POJ1251 Jungle Roads 【最小生成树Prim】

    Jungle Roads Time Limit: 1000MS   Memory Limit: 10000K Total Submissions: 19536   Accepted: 8970 Des ...

  4. 一C++PSO(PSO)算法

    收集和变化PSO算法,它可用于参考实施: #include <cstring> #include <iostream> #include <cmath> #incl ...

  5. java线程中的sleep和wait区别

                                                                            面试题:java线程中sleep和wait的区别以及其资 ...

  6. 【Java】实现一个根据日期判断星座程序的编写

    思路 直接根据月份做索引,然后根据日期边界判断是本月的星座还是上月的. 算法 private static String getAstro(int month, int day) { String[] ...

  7. POJ3617 Best Cow Line 馋

    虽然这个问题很简单,但非常好,由于过程是很不错的.发展思路的比较 并鼓励人们,不像有些贪心太偏,推动穷人,但恼人 鉴于长N弦S,然后又空字符串STR.每当有两个选择 1:删S增加虚假的第一要素STR于 ...

  8. Android开发自学笔记(基于Android Studio1.3.1)—1.环境搭建(转)

    一.引言    本套学习笔记的开发环境是Windows 10 专业版和Android Studio 的最新版1.3.1. Android Studio 是一个Android开发环境,基于Intelli ...

  9. git-push(1) Manual Page

    git-push(1) Manual Page NAME git-push - Update remote refs along with associated objects SYNOPSIS gi ...

  10. 解决win10远程桌面没法关机问题

    win10远程桌面没法关机问题: 解决方法:alt+f4