访问路径、URL、资源加载、转码、 btn的设置、枚举
一、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的设置、枚举的更多相关文章
- spring资源访问接口和资源加载接口
spring 资源访问接口 JDK提供的资源访问类,如java.net.URL.File等,不能很好地满足各种资源的访问需求,比如缺少从类路径或者Web容器的上下文中获取资源的操作类. 鉴于此,spr ...
- SpringBoot-静态资源加载-源码
目录 静态资源映射规则 什么是webjars 呢? 第二种静态资源映射规则 参考链接 静态资源映射规则 SpringBoot中,SpringMVC的web配置都在 WebMvcAutoConfigur ...
- 通过源码浅析Java中的资源加载
前提 最近在做一个基础组件项目刚好需要用到JDK中的资源加载,这里说到的资源包括类文件和其他静态资源,刚好需要重新补充一下类加载器和资源加载的相关知识,整理成一篇文章. 理解类的工作原理 这一节主要分 ...
- MyBatis 源码篇-资源加载
本章主要描述 MyBatis 资源加载模块中的 ClassLoaderWrapper 类和 Java 加载配置文件的三种方式. ClassLoaderWrapper 上一章的案例,使用 org.apa ...
- Cocos Creator 资源加载流程剖析【二】——Download部分
Download流程的处理由Downloader这个pipe负责(downloader.js),Downloader提供了各种资源的"下载"方式--即如何获取文件内容,有从网络获取 ...
- 详谈 Unity3D AssetBundle 资源加载,结合实际项目开发实例
第一次搞资源更新方面,这里只说更新,加载,AssetBundle资源加载,谈谈自己的理解,以及自己在项目中遇到的那些神坑,现在回想一下,真的是自己跪着过来的,说多了,都是泪. 我这边是安卓AssetB ...
- Cocos Creator 资源加载流程剖析【一】——cc.loader与加载管线
这系列文章会对Cocos Creator的资源加载和管理进行深入的剖析.主要包含以下内容: cc.loader与加载管线 Download部分 Load部分 额外流程(MD5 Pipe) 从编辑器到运 ...
- 【死磕 Spring】----- IOC 之 Spring 统一资源加载策略
原文出自:http://cmsblogs.com 在学 Java SE 的时候我们学习了一个标准类 java.net.URL,该类在 Java SE 中的定位为统一资源定位器(Uniform Reso ...
- Spring资源加载器抽象和缺省实现 -- ResourceLoader + DefaultResourceLoader(摘)
概述 对于每一个底层资源,比如文件系统中的一个文件,classpath上的一个文件,或者一个以URL形式表示的网络资源,Spring 统一使用 Resource 接口进行了建模抽象,相应地,对于这些资 ...
- 【sping揭秘】6、IOC容器之统一资源加载策略
Spring中的resource 我们先看看类之间的关系 注意我们的application是间接继承了resourceloader的,也就是说我们的application其实就是一个resourcel ...
随机推荐
- bat(续五)-获取批处理文件所在路径
获取批处理文件所在路径 在开发时,经常需要使用批处理运行一些程序,java程序 犹其是这样,往往需要运行时根路径.Hardcode一个路径总是令自己觉得不自在,例如一个java程序从一台 ...
- iOS开发进阶 - 自定义UICollectionViewLayout实现瀑布流布局
移动端访问不佳,请访问我的个人博客 最近项目中需要用到瀑布流的效果,但是用UICollectionViewFlowLayout又达不到效果,自己动手写了一个瀑布流的layout,下面是我的心路路程 先 ...
- Axis.Labels.CustomSize
tChart1.Axes.Bottom.Labels.CustomSize = ; //Changes spacing occupied by the axis labels between the ...
- js梳理
js引用类型 Object Function Array其他皆为基本类型,这和很多高级语言不一样,需要注意!!!! typeof对应基本类型来说更实用---- typeof undefined ...
- 第八篇:Spark SQL Catalyst源码分析之UDF
/** Spark SQL源码分析系列文章*/ 在SQL的世界里,除了官方提供的常用的处理函数之外,一般都会提供可扩展的对外自定义函数接口,这已经成为一种事实的标准. 在前面Spark SQL源码分析 ...
- RabbitMQ入门(2)——工作队列
前面介绍了队列接收和发送消息,这篇将学习如何创建一个工作队列来处理在多个消费者之间分配耗时的任务.工作队列(work queue),又称任务队列(task queue). 工作队列的目的是为了避免立刻 ...
- python调用虹软2.0第二版
第一版踩了无数的坑,终于第二版把坑全添了,这次更新可以正常获取人脸数,角度,代码可读性更高,继续更新中 第三版已发出 https://www.cnblogs.com/wxt51/p/10125460. ...
- 以普通用户启动的Vim如何保存需要root权限的文件
在Linux上工作的朋友很可能遇到过这样一种情况,当你用Vim编辑完一个文件时,运行:wq保存退出,突然蹦出一个错误: E45: 'readonly' option is set (add ! to ...
- CAJ2PDF
该项目不成熟,很容易遇到转换失败的例子. https://github.com/JeziL/caj2pdf https://github.com/JeziL/caj2pdf/wiki caj2pdf ...
- C++实现矩阵压缩
C++实现矩阵压缩 转置运算时一种最简单的矩阵运算.对于一个m*n的矩阵M,他的转置矩阵T是一个n*m的矩阵,且T(i,j) = M(j,i). 一个稀疏矩阵的转置矩阵仍然是稀疏矩阵. 矩阵转置 方案 ...