一句话笔记(08)

一句话笔记,某段时间内遇到或看到的某个可记录的点。 2016-8-26

  • NSString使用stringWithFormat拼接的实用点
  • beginUpdates & endUpdates
  • Autoresizing特性
  • 如何让 前端页面 区分 是在 App 端展示的还是 浏览器端展示
1、NSString使用stringWithFormat拼接的实用点
  • 保留2位小数点
//.2代表小数点后面保留2位(2代表保留的数量)
NSString *string = [NSString stringWithFormat:@"%.2f",M_PI];
//输出结果是: 3.14
NSLog(@"%@", string);
  • 用0补全的方法
NSInteger count = 3;
 //03代表:如果count不足3位 用0在最前面补全(3代表总输出的个数)
 NSString *string = [NSString stringWithFormat:@"%03ld",count];
//输出结果是: 003
 NSLog(@"%@", string);
  • 字符串中有特殊符号%怎么办
NSInteger count = 80;
//%是一个特殊符号 如果在NSString中用到%需要如下写法
 NSString *string = [NSString stringWithFormat:@"%ld%%",count];
//    NSString *string = [NSString stringWithFormat:@"%ld%@",count,@"%"];
//输出结果是: 80%
NSLog(@"%@", string);
  • 字符串中有特殊符号"怎么办
NSInteger count = 50;
//"是一个特殊符号, 如果在NSString中用到"需要用\进行转义
NSString *string = [NSString stringWithFormat:@"%ld\"",count];
//输出结果是: 50"
 NSLog(@"%@", string);

PS:阅读自iOS 开发中你是否遇到这些经验问题(一)

另外,我看到它原文中 是用" %zd",个人认为是可以斟酌的

NSInteger:%ld
size_t:%zd
NSUInteger:%lu
%d/%D:带符号32位整数(int)
%o/%O:无符号32位整数(unsigned int)的八进制格式
%x/%X:无符号32位整数(unsigned int)的十六进制格式
%c:8位无符号字符(unsigned char)
%C:16位UNICODE字符(unichar)
%f:64位浮点数(double

在 NSInteger 情况下, 还是用 %ld吧,上述实用点中第二点,没用过,得记录下。

2、 beginUpdates & endUpdates

这个以前,我平常没怎么用到,但是在看我们老项目的时候,发现啦它

[tableView beginUpdates];
[tableView reloadData];
[tableView endUpdates];

很疑惑为什么要这样写,结果查阅后,认为这样写是错的,因为一般我们要执行动画时,才会遇到 beginUpdatesendUpdates 的,而reloadData 是更新数据源的。

[tableView beginUpdates];
// 删除、插入、更新
[tableView endUpdates];
[tableView reloadRowsAtIndexPaths:@[] withRowAnimation:UITableViewRowAnimationAutomatic];

以前直接这么写也没遇到问题,但是系统有它,肯定是有其原因的,所以认为一般我们用到删除、更新、插入带有动画时 (withRowAnimation) 配合用它会更合适。

3、 Autoresizing 特性

现在我们一般都用 AutoLayout , 但是以前 Autoresizing 使用还是很常见的,毕竟之前是木有自动布局的,在看一些老的代码中常看到,特此记录下。

Autoresizing: 当 UIView 的 autoresizesSubviews是YES时,(默认是YES), 那么在其中的子view会根据它自身的autoresizingMask属性来自动适应其与superView之间的位置和大小。autoresizingMask是一个枚举类型, 默认是UIViewAutoresizingNone, 也就是不会 autoresize。

typedef NS_OPTIONS(NSUInteger, UIViewAutoresizing) { 
UIViewAutoresizingNone = 0,  //view的frame不会随superview的改变而改变
UIViewAutoresizingFlexibleLeftMargin = 1 << 0,  //自动调整view与superview左边的距离保证右边距离不变
UIViewAutoresizingFlexibleWidth = 1 << 1, //自动调整view的宽,保证与superView的左右边距不变
UIViewAutoresizingFlexibleRightMargin = 1 << 2, //自动调整view与superview右边的距离保证左边距不变
UIViewAutoresizingFlexibleTopMargin = 1 << 3,//自动调整view与superview顶部的距离保证底部距离不变
UIViewAutoresizingFlexibleHeight = 1 << 4,  //自动调整view的高,保证与superView的顶部和底部距离不变
UIViewAutoresizingFlexibleBottomMargin = 1 << 5 //自动调整view与superview底部部的距离保证顶部距离不变
};

备注来源:iOS自动布局之Autoresizing

4、如何让 前端页面 区分 是在 App 端展示的还是 浏览器端展示

简单的说,可以通过获取用户的的 用户代理 来区分是否 是在 App 中展示的还是在浏览器中的展示的,也可以换成如何获取 UserAgent,并改变它。

用户代理(英语:User Agent)指的是代表 用户 行为的软件 软件代理程序 所提供的对自己的一个标识符。

**PS百度备注: ** Apple开发了Safari,使用了KHTML,同时也增加了很多新特性,后来干脆一锅煮,另起炉灶叫了WebKit,但是它有希望能够得到那些为KHTML编写的网页,于是Safari标称自己为Mozilla/5.0 (Macintosh; U; PPC Mac OS X; de-de) AppleWebKit/85.7 (KHTML, like Gecko) Safari/85.5。

PS维基备注:在HTTP中,User-Agent字符串通常被用于内容协商,而原始服务器为该响应选择适当的内容或操作参数。例如,User-Agent字符串可能被网络服务器用以基于特定版本的客户端软件的已知功能选择适当的变体。

iOS 中获取 userAgent
  • UIWebView
NSString *userAgent = [webView stringByEvaluatingJavaScriptFromString:@"navigator.userAgent"];
NSLog(@"userAgent === %@",userAgent);
  • WKWebView
[wkWebView evaluateJavaScript:@"navigator.userAgent" completionHandler:^(id result, NSError *error) { 
        NSLog(@"userAgent === %@",result);
}];
iOS 中改变 userAgent
  • UIWebView
// 此处可直接在 AppDelegate 中 didFinishLaunchingWithOptions:
UIWebView *webView = [[UIWebView alloc] initWithFrame:CGRectZero];
NSString *userAgent = [webView stringByEvaluatingJavaScriptFromString:@"navigator.userAgent"];
NSString *newUserAgent = [userAgent stringByAppendingString:@" iOS_userAgent"];
NSDictionary *dictionary = [NSDictionary dictionaryWithObjectsAndKeys:newUserAgent, @"UserAgent", nil];
[[NSUserDefaults standardUserDefaults] registerDefaults:dictionary];
  • WKWebView
    这是iOS 9.0 之后增加的一个属性,customUserAgent
@property (nullable, nonatomic, copy) NSString *customUserAgent NS_AVAILABLE(10_11, 9_0);

iOS 8.0 - iOS 9.0 之间 WKWebView 改变 userAgent 比较特殊,可参考 Set useragent in WKWebview

换一个角度想,对 userAgent 的了解也是对 Web 端学习的另一个开始,毕竟现在学习Web 刻不容缓啊。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 203,547评论 6 477
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,399评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,428评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,599评论 1 274
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,612评论 5 365
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,577评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,941评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,603评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,852评论 1 297
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,605评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,693评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,375评论 4 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,955评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,936评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,172评论 1 259
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 43,970评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,414评论 2 342

推荐阅读更多精彩内容

  • KVC(Key-value coding)键值编码,单看这个名字可能不太好理解。其实翻译一下就很简单了,就是指iO...
    朽木自雕也阅读 1,546评论 6 1
  • 原文 在这里总结一些iOS开发中的小技巧,能大大方便我们的开发,持续更新。 1.UITableView的Group...
    无沣阅读 764评论 0 2
  • //设置尺寸为屏幕尺寸的时候self.window = [[UIWindow alloc] initWithFra...
    LuckTime阅读 791评论 0 0
  • // // JackDateAndDateView.m // ZHB // // Created by JackR...
    JackRen阅读 393评论 0 1
  • ——2017年国庆大理无为寺禅修感悟 来大理无为寺禅修是源于不久前一个大学同学的推荐,他说他最近去了无...
    lizzy1012阅读 1,453评论 1 2