iOS开发知识点总结(三)
1.属性字符串的使用
可为一段文本的不同区间设置不同显示格式
int remainCount = 999;
NSMutableAttributedString *attributes = [[NSMutableAttributedString alloc] initWithString:[NSString stringWithFormat:@"%d+新品",remainCount]];
//添加前景色属性(此处将0-3范围的字符串的颜色设置为紫色)类似还可添加不同的属性
[attributes addAttribute:NSForegroundColorAttributeName value:[UIColor purpleColor] range:NSMakeRange(0, 3)];
//设置属性文字
_remianCountLabel.attributedText = attributes;
2.iOS富文本组件的实现-DTCoreText
DTCoreText是个开源的iOS富文本组件,它可以解析HTML与CSS最终用CoreText绘制出来,主要用来替代高内存消耗的低性能的UIWebView
3.TextKit
4.代码快速排版快捷键
全选ctrl+A , 快速排版ctrl+I
5.自定义按钮的图片和文字的显示位置
UIButton *button = [UIButton buttonWithType:UIButtonTypeCustom];
[button setTitle:@"我在这里" forState:UIControlStateNormal];
[button setImage:[UIImage imageNamed:@"pp"]; forState:UIControlStateNormal];button.titleEdgeInsets = UIEdgeInsetsMake(0, -40, 0, 0);button.imageEdgeInsets = UIEdgeInsetsMake(0, 0, 10, 0);
UIEdgeInsetsMake(CGFloat top, CGFloat left, CGFloat bottom, CGFloat right);
四个参数分别表述上、左、底、右距离默认位置的距离
6.UIImage图片旋转
通过UIImage的类方法实现
//下面的类方法可对图片进行旋转的同时进行缩放
+ (UIImage *)imageWithCGImage:(CGImageRef)cgImage scale:(CGFloat)scale orientation:(UIImageOrientation)orientation ;
示例:
UIImage *image = [UIImage imageWithCGImage:[UIImage imageNamed:@"pp"].CGImage scale:1 orientation:UIImageOrientationLeft];
7.UITextView设置占位文本
在控制器的view上添加UITextView和UILabel,这里将UILabel设置为我们的占位文本,并设置UITextView的代理之后编写代理方法
UITextView *_secretContent;
UILabel *_placeHolderLabel;
#pragma mark 带有placeholder的textview的实现
-(BOOL)textView:(UITextView *)textView shouldChangeTextInRange:(NSRange)range replacementText:(NSString *)text
{if ([text isEqualToString:@"\n"]) {//检测到“完成”[textView resignFirstResponder];//释放键盘return NO;}if (_secretContent.text.length==0){//textview长度为0if ([text isEqualToString:@""]) {//判断是否为删除键_placeHolderLabel.hidden=NO;//隐藏文字}else{_placeHolderLabel.hidden=YES;}}else{//textview长度不为0if (_secretContent.text.length==1){//textview长度为1时候if ([text isEqualToString:@""]) {//判断是否为删除键_placeHolderLabel.hidden=NO;}else{//不是删除_placeHolderLabel.hidden=YES;}}else{//长度不为1时候_placeHolderLabel.hidden=YES;}}return YES;
}
8.dispatch_once实现单例
void dispatch_once( dispatch_once_t *predicate, dispatch_block_t block);
predicate:用于检查该代码块是否已经被调度的谓词
示例代码如下:
+ (id)sharedManager {static dispatch_once_t once;static id instance;dispatch_once(&once, ^{instance = [self new];});return instance;
}
9.iOS正则匹配(当前时间的正则匹配)
正则匹配表达式基础入门:http://blog.csdn.net/lxcnn/article/details/4268033
//当前时间的正则匹配
NSDate *date = [NSDate date];
NSDateFormatter *formatter = [[NSDateFormatter alloc] init];
[formatter setDateFormat:@"dd-MM-yyyy HH:mm:ss"];
NSString *urlString = [formatter stringFromDate:date];
NSLog(@"urlString=%@",urlString);
NSError *error;
NSRegularExpression *regex = [NSRegularExpression regularExpressionWithPattern:@"^(0[1-9]|[1|2][0-9]|3[0|1])[-|/|.](0[1-9]|1[0|1|2])[-|/|.](19|20)\\d\\d\\s(0[0-9]|1[0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9]$" options:0 error:&error];if (regex != nil) {
NSTextCheckingResult *firstMatch = [regex firstMatchInString:urlString options:0 range:NSMakeRange(0, [urlString length])];
if (firstMatch) {
NSRange resultRange = [firstMatch rangeAtIndex:0];
//从urlString中截取数据
NSString *result = [urlString substringWithRange:resultRange];
NSLog(@"正则匹配结果=%@",result);
}
}
输出结果:
2015-04-17 14:19:14.713 PredicateTest[2023:97164] urlString=17-04-2015 14:19:14
2015-04-17 14:19:14.719 PredicateTest[2023:97164] 正则匹配结果=17-04-2015 14:19:14
10.使用Object-C字面量
//字典的存取
NSDictionary *dict = @{@"s1":@"v1",@"s2":@"v2"};
NSString *string = dict[@"s1"];
//相当于[NSNumber numberWithInt:10]
NSNumber *number = @10;
//数组的存取
NSArray *array = @[@1,@2,@"s"];
NSString *s = array[1];
11.iOS8.x模拟器输入中文
模拟器设置->通用->键盘->键盘->添加新键盘->简体中文(英文环境下:Settings->General->Keyboard->Keyboards->Add New Keyboard->Chinese(Simplified)->Pinyin-QWERTY->Done
然后在Xcode菜单Product->Scheme->EditScheme->Options->Application Region->中国
12.将汉字转成拼音
NSMutableString *pinyin = [@"吧啦吧啦小魔仙变身!!!" mutableCopy];
CFStringTransform((__bridge CFMutableStringRef)pinyin, NULL, kCFStringTransformMandarinLatin, NO);
CFStringTransform((__bridge CFMutableStringRef)pinyin, NULL, kCFStringTransformStripCombiningMarks, NO);
NSLog(@"%@", pinyin);
13.将OC代码转成C++底层代码
终端输入:clang -rewrite-objc main.m
iOS开发知识点总结(三)相关推荐
- iOS开发备战金三银四·头条三面记录
一面 一.自我介绍 简单介绍一下你自己吧 解析:简单介绍下自己的名字,教育背景,现在的工作,做过的项目 二.自我介绍衍生的口头问题 讲讲下你在你项目中做过的优化或者技术难点 解析:介绍了自己封装的一个 ...
- iOS开发知识点总结
main文件做了这几件事:1. 创建当前的应用程序2. 根据4个参数的最后为应用程序设置代理类(默认情况下是AppDelegate)3. 将appDelegate 和 应用程序 建立关联(指定代理,) ...
- 如何深入理解 iOS 开发中的锁?
摘要 本文的目的不是介绍 iOS 中各种锁如何使用,一方面笔者没有大量的实战经验,另一方面这样的文章相当多,比如 iOS中保证线程安全的几种方式与性能对比.iOS 常见知识点(三):Lock.本文也不 ...
- 理解:iOS开发中锁的实现原理
摘要 本文的目的不是介绍 iOS 中各种锁如何使用,一方面笔者没有大量的实战经验,另一方面这样的文章相当多,比如 iOS中保证线程安全的几种方式与性能对比.iOS 常见知识点(三):Lock.本文也不 ...
- 深入理解 iOS 开发中的锁
深入理解 iOS 开发中的锁 摘要 本文的目的不是介绍 iOS 中各种锁如何使用,一方面笔者没有大量的实战经验,另一方面这样的文章相当多,比如 iOS中保证线程安全的几种方式与性能对比.iOS 常见知 ...
- iOS开发中的锁实现猜测
本文的目的不是介绍 iOS 中各种锁如何使用,一方面笔者没有大量的实战经验,另一方面这样的文章相当多,比如 iOS中保证线程安全的几种方式与性能对比.iOS 常见知识点(三):Lock.本文也不会详细 ...
- 测试开发知识点整理(二)
软件测试基础 软件测试的概念 63.软件测试的重要性 64.软件测试的对象有哪些(掌握) 65. 软件测试的目的是什么(掌握) 66. 软件测试的依据是什么(掌握) 67.软件需求的类型及软件需求分析 ...
- 测试开发知识点整理(四)
Web自动化,接口测试和app测试 Web自动化 Web性能自动化 193. LoadRunner工具 194. 服务器性能监控工具(了解) 单元测试框架 195. JUnit框架 196. hamc ...
- iOS开发之三大计时器(Timer、DispatchSourceTimer、CADisplayLink)
1. 概述 说起计时器,很多开发人员第一时间就会想起Timer,但是随着使用的深入,慢慢就发现Timer不是很精确,随后就有想到GCD Timer,专业点就是DispatchSourceTimer,除 ...
最新文章
- Nature综述|预测生物学:微生物复杂性的解析、模拟与应用
- tensorflow 模型预训练后的参数restore finetuning
- 提示错误“'=' not supported between instances of 'range' and 'int'”
- RESTful服务的第三部分:HATEOAS和Richardson成熟度模型
- java图形界面关键字_怎样用Java编写一个图形界面,要求可以利用关键词查询txt中的内容...
- 网页打印物理大小尺寸的单位换算
- windows api 每日一练(5)基本内存操作
- ubuntu 安装nvidia 驱动后无法进入桌面(循环进入登录界面 )
- NSCharacterSet 去除NSString中的空格
- 微信公众号根据URL取文章详情 API 返回值说明
- 电子科技大学《图论及其应用》复习总结--第一章 图的基本概念
- winform5、高清屏下字体模糊的解决方法
- unity 反编译 step1 disUnity
- 【笔记】ARM裸机程序开发_part3
- python预测你的小孩身高_儿童身高预测方法
- 2020阿里云服务器免费领取与互联教程
- 【038】翼辉携手太空链:拥抱商业航天发展
- Melanopic EDI(简称m-EDI) 计算软件
- 微型计算机更新换代标致,实拍标致408十周年版 新增全液晶仪表盘
- java实现mysql自动更新创建时间与更新时间的两种方式