一、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的分类中

访问路径、URL、资源加载、转码、 btn的设置、枚举的更多相关文章

  1. spring资源访问接口和资源加载接口

    spring 资源访问接口 JDK提供的资源访问类,如java.net.URL.File等,不能很好地满足各种资源的访问需求,比如缺少从类路径或者Web容器的上下文中获取资源的操作类. 鉴于此,spr ...

  2. SpringBoot-静态资源加载-源码

    目录 静态资源映射规则 什么是webjars 呢? 第二种静态资源映射规则 参考链接 静态资源映射规则 SpringBoot中,SpringMVC的web配置都在 WebMvcAutoConfigur ...

  3. 通过源码浅析Java中的资源加载

    前提 最近在做一个基础组件项目刚好需要用到JDK中的资源加载,这里说到的资源包括类文件和其他静态资源,刚好需要重新补充一下类加载器和资源加载的相关知识,整理成一篇文章. 理解类的工作原理 这一节主要分 ...

  4. MyBatis 源码篇-资源加载

    本章主要描述 MyBatis 资源加载模块中的 ClassLoaderWrapper 类和 Java 加载配置文件的三种方式. ClassLoaderWrapper 上一章的案例,使用 org.apa ...

  5. Cocos Creator 资源加载流程剖析【二】——Download部分

    Download流程的处理由Downloader这个pipe负责(downloader.js),Downloader提供了各种资源的"下载"方式--即如何获取文件内容,有从网络获取 ...

  6. 详谈 Unity3D AssetBundle 资源加载,结合实际项目开发实例

    第一次搞资源更新方面,这里只说更新,加载,AssetBundle资源加载,谈谈自己的理解,以及自己在项目中遇到的那些神坑,现在回想一下,真的是自己跪着过来的,说多了,都是泪. 我这边是安卓AssetB ...

  7. Cocos Creator 资源加载流程剖析【一】——cc.loader与加载管线

    这系列文章会对Cocos Creator的资源加载和管理进行深入的剖析.主要包含以下内容: cc.loader与加载管线 Download部分 Load部分 额外流程(MD5 Pipe) 从编辑器到运 ...

  8. 【死磕 Spring】----- IOC 之 Spring 统一资源加载策略

    原文出自:http://cmsblogs.com 在学 Java SE 的时候我们学习了一个标准类 java.net.URL,该类在 Java SE 中的定位为统一资源定位器(Uniform Reso ...

  9. Spring资源加载器抽象和缺省实现 -- ResourceLoader + DefaultResourceLoader(摘)

    概述 对于每一个底层资源,比如文件系统中的一个文件,classpath上的一个文件,或者一个以URL形式表示的网络资源,Spring 统一使用 Resource 接口进行了建模抽象,相应地,对于这些资 ...

  10. 【sping揭秘】6、IOC容器之统一资源加载策略

    Spring中的resource 我们先看看类之间的关系 注意我们的application是间接继承了resourceloader的,也就是说我们的application其实就是一个resourcel ...

随机推荐

  1. shell脚本中使用什么工具进行计算

    1.答: expr 2. expr的用法: jello=$(expr 1 \* 3) //乘法,注意1和expr之间有空格,1与转换符\之间有空格,3和*之间有空格 jello=$(expr 1 / ...

  2. springboot2.1.3集成webservice及错误No operation was found with the name {...}解决办法

    1.项目使用springboot 2.1.3版本,集成webservice使用的依赖如下 <parent> <groupId>org.springframework.boot& ...

  3. 剑指Offer——最长不包含重复字符的子字符串

    Solution 动态规划. f(i)表示包含第i个字符的最长子串. 如果第i个字符没在之前出现过,那么f(i) = f(i - 1) + 1 如果第i个字符在之前出现过,这个时候应该分两种情况,假设 ...

  4. Python学习札记(五) Basic2 字符串和编码

    参考:字符串和编码 Note A.字符编码 1.计算机处理文本 == 将文本转换为二进制 => 处理 2.8 bit(比特) = 1 byte(字节) 一个字节所能表示的最大的十进制整数是255 ...

  5. nginx+nagios使用用户名密码鉴权设置

    1.使用htpasswd生成密码 使用apache生成/usr/local/apache2/bin/htpasswd -c ./htpasswd.users nagiosadmin 拷贝到nginx的 ...

  6. GridControl 史上最全的资料(一)

    GridControl详解(一)原汁原味的表格展示 Dev控件中的表格控件GridControl控件非常强大.不过,一些细枝末节的地方有时候用起来不好找挺讨厌的.使用过程中,多半借助Demo和英文帮助 ...

  7. 关于java.lang.Exception:No tests found matching的一系列解决方法

    问题描述: java.lang.Exception: No tests found matching [{ExactMatcher:fDisplayName=yahaa], {ExactMatcher ...

  8. LeetCode第[73]题(Java):Set Matrix Zeroes(矩阵置0)

    题目:矩阵置0 难度:Easy 题目内容: Given a m x n matrix, if an element is 0, set its entire row and column to 0. ...

  9. 4.彻底理解synchronized

    1. synchronized简介 在学习知识前,我们先来看一个现象: public class SynchronizedDemo implements Runnable {    private s ...

  10. Java连接MySQL数据库——代码

    工具:eclipse MySQL5.7.17 MySQL连接驱动:mysql-connector-java-5.1.43.jar 加载驱动:我是用MAVEN进行管理 数据库连接信息: 数据库名称:wu ...