一句話筆記(08)

一句話筆記,某段時(shí)間內(nèi)遇到或看到的某個(gè)可記錄的點(diǎn)怖喻。 2016-8-26

  • NSString使用stringWithFormat拼接的實(shí)用點(diǎn)
  • beginUpdates & endUpdates
  • Autoresizing特性
  • 如何讓 前端頁(yè)面 區(qū)分 是在 App 端展示的還是 瀏覽器端展示
1留潦、NSString使用stringWithFormat拼接的實(shí)用點(diǎn)
  • 保留2位小數(shù)點(diǎn)
//.2代表小數(shù)點(diǎn)后面保留2位(2代表保留的數(shù)量)
NSString *string = [NSString stringWithFormat:@"%.2f",M_PI];
//輸出結(jié)果是: 3.14
NSLog(@"%@", string);
  • 用0補(bǔ)全的方法
NSInteger count = 3;
 //03代表:如果count不足3位 用0在最前面補(bǔ)全(3代表總輸出的個(gè)數(shù))
 NSString *string = [NSString stringWithFormat:@"%03ld",count];
//輸出結(jié)果是: 003
 NSLog(@"%@", string);
  • 字符串中有特殊符號(hào)%怎么辦
NSInteger count = 80;
//%是一個(gè)特殊符號(hào) 如果在NSString中用到%需要如下寫(xiě)法
 NSString *string = [NSString stringWithFormat:@"%ld%%",count];
//    NSString *string = [NSString stringWithFormat:@"%ld%@",count,@"%"];
//輸出結(jié)果是: 80%
NSLog(@"%@", string);
  • 字符串中有特殊符號(hào)"怎么辦
NSInteger count = 50;
//"是一個(gè)特殊符號(hào), 如果在NSString中用到"需要用\進(jìn)行轉(zhuǎn)義
NSString *string = [NSString stringWithFormat:@"%ld\"",count];
//輸出結(jié)果是: 50"
 NSLog(@"%@", string);

PS:閱讀自iOS 開(kāi)發(fā)中你是否遇到這些經(jīng)驗(yàn)問(wèn)題(一)

另外指么,我看到它原文中 是用" %zd",個(gè)人認(rèn)為是可以斟酌的

NSInteger:%ld
size_t:%zd
NSUInteger:%lu
%d/%D:帶符號(hào)32位整數(shù)(int)
%o/%O:無(wú)符號(hào)32位整數(shù)(unsigned int)的八進(jìn)制格式
%x/%X:無(wú)符號(hào)32位整數(shù)(unsigned int)的十六進(jìn)制格式
%c:8位無(wú)符號(hào)字符(unsigned char)
%C:16位UNICODE字符(unichar)
%f:64位浮點(diǎn)數(shù)(double

在 NSInteger 情況下, 還是用 %ld吧焕梅,上述實(shí)用點(diǎn)中第二點(diǎn)师脂,沒(méi)用過(guò)担孔,得記錄下江锨。

2、 beginUpdates & endUpdates

這個(gè)以前攒磨,我平常沒(méi)怎么用到泳桦,但是在看我們老項(xiàng)目的時(shí)候汤徽,發(fā)現(xiàn)啦它

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

很疑惑為什么要這樣寫(xiě)娩缰,結(jié)果查閱后,認(rèn)為這樣寫(xiě)是錯(cuò)的谒府,因?yàn)橐话阄覀円獔?zhí)行動(dòng)畫(huà)時(shí)拼坎,才會(huì)遇到 beginUpdatesendUpdates 的完疫,而reloadData 是更新數(shù)據(jù)源的泰鸡。

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

以前直接這么寫(xiě)也沒(méi)遇到問(wèn)題盛龄,但是系統(tǒng)有它,肯定是有其原因的芳誓,所以認(rèn)為一般我們用到刪除余舶、更新、插入帶有動(dòng)畫(huà)時(shí) (withRowAnimation) 配合用它會(huì)更合適锹淌。

3匿值、 Autoresizing 特性

現(xiàn)在我們一般都用 AutoLayout , 但是以前 Autoresizing 使用還是很常見(jiàn)的,畢竟之前是木有自動(dòng)布局的赂摆,在看一些老的代碼中承荆看到,特此記錄下烟号。

Autoresizing: 當(dāng) UIView 的 autoresizesSubviews是YES時(shí)绊谭,(默認(rèn)是YES), 那么在其中的子view會(huì)根據(jù)它自身的autoresizingMask屬性來(lái)自動(dòng)適應(yīng)其與superView之間的位置和大小。autoresizingMask是一個(gè)枚舉類(lèi)型, 默認(rèn)是UIViewAutoresizingNone, 也就是不會(huì) autoresize汪拥。

typedef NS_OPTIONS(NSUInteger, UIViewAutoresizing) { 
UIViewAutoresizingNone = 0,  //view的frame不會(huì)隨superview的改變而改變
UIViewAutoresizingFlexibleLeftMargin = 1 << 0,  //自動(dòng)調(diào)整view與superview左邊的距離保證右邊距離不變
UIViewAutoresizingFlexibleWidth = 1 << 1, //自動(dòng)調(diào)整view的寬达传,保證與superView的左右邊距不變
UIViewAutoresizingFlexibleRightMargin = 1 << 2, //自動(dòng)調(diào)整view與superview右邊的距離保證左邊距不變
UIViewAutoresizingFlexibleTopMargin = 1 << 3,//自動(dòng)調(diào)整view與superview頂部的距離保證底部距離不變
UIViewAutoresizingFlexibleHeight = 1 << 4,  //自動(dòng)調(diào)整view的高,保證與superView的頂部和底部距離不變
UIViewAutoresizingFlexibleBottomMargin = 1 << 5 //自動(dòng)調(diào)整view與superview底部部的距離保證頂部距離不變
};

備注來(lái)源:iOS自動(dòng)布局之Autoresizing

4喷楣、如何讓 前端頁(yè)面 區(qū)分 是在 App 端展示的還是 瀏覽器端展示

簡(jiǎn)單的說(shuō)趟大,可以通過(guò)獲取用戶的的 用戶代理 來(lái)區(qū)分是否 是在 App 中展示的還是在瀏覽器中的展示的,也可以換成如何獲取 UserAgent铣焊,并改變它逊朽。

用戶代理(英語(yǔ):User Agent)指的是代表 用戶 行為的軟件 軟件代理程序 所提供的對(duì)自己的一個(gè)標(biāo)識(shí)符。

**PS百度備注: ** Apple開(kāi)發(fā)了Safari曲伊,使用了KHTML叽讳,同時(shí)也增加了很多新特性追他,后來(lái)干脆一鍋煮,另起爐灶叫了WebKit岛蚤,但是它有希望能夠得到那些為KHTML編寫(xiě)的網(wǎng)頁(yè)邑狸,于是Safari標(biāo)稱自己為Mozilla/5.0 (Macintosh; U; PPC Mac OS X; de-de) AppleWebKit/85.7 (KHTML, like Gecko) Safari/85.5。

PS維基備注:在HTTP中涤妒,User-Agent字符串通常被用于內(nèi)容協(xié)商单雾,而原始服務(wù)器為該響應(yīng)選擇適當(dāng)?shù)膬?nèi)容或操作參數(shù)。例如她紫,User-Agent字符串可能被網(wǎng)絡(luò)服務(wù)器用以基于特定版本的客戶端軟件的已知功能選擇適當(dāng)?shù)淖凅w硅堆。

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 之后增加的一個(gè)屬性,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

換一個(gè)角度想渐逃,對(duì) userAgent 的了解也是對(duì) Web 端學(xué)習(xí)的另一個(gè)開(kāi)始,畢竟現(xiàn)在學(xué)習(xí)Web 刻不容緩啊民褂。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末茄菊,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子赊堪,更是在濱河造成了極大的恐慌面殖,老刑警劉巖,帶你破解...
    沈念sama閱讀 222,464評(píng)論 6 517
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件雹食,死亡現(xiàn)場(chǎng)離奇詭異畜普,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī)群叶,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 95,033評(píng)論 3 399
  • 文/潘曉璐 我一進(jìn)店門(mén)吃挑,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人街立,你說(shuō)我怎么就攤上這事舶衬。” “怎么了赎离?”我有些...
    開(kāi)封第一講書(shū)人閱讀 169,078評(píng)論 0 362
  • 文/不壞的土叔 我叫張陵逛犹,是天一觀的道長(zhǎng)。 經(jīng)常有香客問(wèn)我梁剔,道長(zhǎng)虽画,這世上最難降的妖魔是什么? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 59,979評(píng)論 1 299
  • 正文 為了忘掉前任荣病,我火速辦了婚禮码撰,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘个盆。我一直安慰自己脖岛,他們只是感情好朵栖,可當(dāng)我...
    茶點(diǎn)故事閱讀 69,001評(píng)論 6 398
  • 文/花漫 我一把揭開(kāi)白布。 她就那樣靜靜地躺著柴梆,像睡著了一般陨溅。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上绍在,一...
    開(kāi)封第一講書(shū)人閱讀 52,584評(píng)論 1 312
  • 那天门扇,我揣著相機(jī)與錄音,去河邊找鬼揣苏。 笑死悯嗓,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的卸察。 我是一名探鬼主播,決...
    沈念sama閱讀 41,085評(píng)論 3 422
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼铅祸,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼坑质!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起临梗,我...
    開(kāi)封第一講書(shū)人閱讀 40,023評(píng)論 0 277
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤涡扼,失蹤者是張志新(化名)和其女友劉穎,沒(méi)想到半個(gè)月后盟庞,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體吃沪,經(jīng)...
    沈念sama閱讀 46,555評(píng)論 1 319
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,626評(píng)論 3 342
  • 正文 我和宋清朗相戀三年什猖,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了票彪。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 40,769評(píng)論 1 353
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡不狮,死狀恐怖降铸,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情摇零,我是刑警寧澤推掸,帶...
    沈念sama閱讀 36,439評(píng)論 5 351
  • 正文 年R本政府宣布,位于F島的核電站驻仅,受9級(jí)特大地震影響谅畅,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜噪服,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 42,115評(píng)論 3 335
  • 文/蒙蒙 一毡泻、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧芯咧,春花似錦牙捉、人聲如沸竹揍。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 32,601評(píng)論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)芬位。三九已至,卻和暖如春带到,著一層夾襖步出監(jiān)牢的瞬間昧碉,已是汗流浹背。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 33,702評(píng)論 1 274
  • 我被黑心中介騙來(lái)泰國(guó)打工揽惹, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留被饿,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 49,191評(píng)論 3 378
  • 正文 我出身青樓搪搏,卻偏偏與公主長(zhǎng)得像狭握,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子疯溺,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,781評(píng)論 2 361

推薦閱讀更多精彩內(nèi)容

  • KVC(Key-value coding)鍵值編碼论颅,單看這個(gè)名字可能不太好理解。其實(shí)翻譯一下就很簡(jiǎn)單了囱嫩,就是指iO...
    朽木自雕也閱讀 1,563評(píng)論 6 1
  • 原文 在這里總結(jié)一些iOS開(kāi)發(fā)中的小技巧恃疯,能大大方便我們的開(kāi)發(fā),持續(xù)更新墨闲。 1.UITableView的Group...
    無(wú)灃閱讀 782評(píng)論 0 2
  • //設(shè)置尺寸為屏幕尺寸的時(shí)候self.window = [[UIWindow alloc] initWithFra...
    LuckTime閱讀 819評(píng)論 0 0
  • // // JackDateAndDateView.m // ZHB // // Created by JackR...
    JackRen閱讀 414評(píng)論 0 1
  • ——2017年國(guó)慶大理無(wú)為寺禪修感悟 來(lái)大理無(wú)為寺禪修是源于不久前一個(gè)大學(xué)同學(xué)的推薦鸳碧,他說(shuō)他最近去了無(wú)...
    lizzy1012閱讀 1,506評(píng)論 1 2