访问路径、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 ...
随机推荐
- terminal配置
阅读目录 前言 使用 tmux 复用控制台窗口 在命令行中快速移动光标 在命令行中快速删除文本 快速查看和搜索历史命令 快速引用和修饰历史命令 录制屏幕并转换为 gif 动画图片 总结 回到顶部 前言 ...
- ubuntu18.04 64bit如何安装docker
注:参考自https://docs.docker.com/install/linux/docker-ce/ubuntu/ 1.卸载旧版本docker(如果之前安装了) sudo apt-get rem ...
- ISSCC 2017论文导读 Session 14 Deep Learning Processors,A 2.9TOPS/W Deep Convolutional Neural Network SOC
最近ISSCC2017大会刚刚举行,看了关于Deep Learning处理器的Session 14,有一些不错的东西,在这里记录一下. A 2.9TOPS/W Deep Convolutional N ...
- 在使用Vue.js中使用axios库时,遇到415错误(不支持的媒体类型(Unsupported media type))
知识点:vue2.0中使用axios进行(put,post请求时),遇到415错误 解决办法:在axios的第三个参数config中,设置请求头信息'Content-Type': 'applicati ...
- hdu5616 暴力枚举
2017-08-25 20:08:54 writer:pprp 题目简述: • HDU 5616• n个砝码,可以放在天平左右两侧或不放• m次询问,每次询问是否可以测出给定重量• 1 ≤ n ≤ 2 ...
- Python学习札记(九) Basic6 dict and set
参考:dict and set Note: A.dict Hint:注意最后三点. 1.Python内置字典dict,全称directory,在别的语言如C++中称为map,使用键值-value存储, ...
- apollo 部门管理
apollo 默认部门有两个.如果想要增加自己的部门,只能通过数据库ApolloPortalDB 修改表ServiceConfig中organizations即可:
- vue-router之学习笔记
用 Vue.js + vue-router 创建单页应用,是非常简单的.使用 Vue.js ,我们已经可以通过组合组件来组成应用程序,当你要把 vue-router 添加进来,我们需要做的是,将组件( ...
- Java导出Excel(有数据库导出代码)
/** * 导出 * @param request * @param response * @throws Exception */ @SuppressWarnings("unchecked ...
- Maven 中的dependencies与dependencyManagement的区别
1.dependencyManagement 在Maven中dependencyManagement的作用其实相当于一个对所依赖jar包进行版本管理的管理器 在pom.xml文件中,jar的版本判断的 ...