雜⑦碎八之--百思Demo Z2

插件擴(kuò)展:一般插件都支持?jǐn)U展,對自己我創(chuàng)建的分類進(jìn)行支持.

找到安裝插件的工程文件,全局搜索install 安裝路徑

根據(jù)安裝路徑查找本地的文件

修改文件中的plist文件,支持本地化內(nèi)容.

解決文字被渲染.

如果顯示出來默認(rèn)藍(lán)色,首先考慮的屬性是tintColor

-tintColor always returns a color. The color returned is the first non-default value in the receiver's superview chain (starting with itself).

If no non-default value is found, a system-defined color is returned.

If this view's -tintAdjustmentMode returns Dimmed, then the color that is returned for -tintColor will automatically be dimmed.

If your view subclass uses tintColor in its rendering, override -tintColorDidChange in order to refresh the rendering if the color changes.

注釋:大致意思是說,這個屬性會一直返回一個顏色,如果沒有默認(rèn)或者設(shè)置顏色,返回系統(tǒng)的顏色也就是經(jīng)程僖遥看到的藍(lán)色.

@property(null_resettable, nonatomic, strong) UIColor *tintColor NS_AVAILABLE_IOS(7_0);


UITabBarItem里沒有關(guān)于文字顏色的屬性,去父類UIBarItem中查找到- (void)setTitleTextAttributes:(nullableNSDictionary *)attributes forState:(UIControlState)stateNS_AVAILABLE_IOS(5_0)UI_APPEARANCE_SELECTOR;這個方法可以設(shè)置文字的屬性

TextAttribute 富文本屬性

關(guān)于設(shè)置文字在哪個方法中寫:

①+ (void)initialize第一次使用類或者他的子類的時候調(diào)用,有可能會調(diào)用多次.

②+ (void)load第一次加載類的時候調(diào)用,只會調(diào)用一次 ?在此,選用這個方法

5.在本項目中,此處文字的字體狀態(tài)是,Normal狀態(tài),而不是高亮狀態(tài)

6.關(guān)于Appearance的使用

①只要遵守了UIAppearance協(xié)議就可以使用

②只有帶有UI_APPEARANCE_SELECTOR宏屬性才可以去設(shè)置

③如果使用appearance設(shè)置屬性,那么必須在顯示之前設(shè)置.

發(fā)布按鈕的設(shè)置

bug的發(fā)現(xiàn):剛開始設(shè)置后,發(fā)現(xiàn)按鈕圖片沒有正常顯示,之后調(diào)整全部tabbarButton按鈕圖片被渲染的同時,發(fā)現(xiàn)按鈕未正常顯示因為在正常狀態(tài)下圖片尺寸超過了內(nèi)容區(qū)域,同時被渲染.

解決:1.設(shè)置圖片不被渲染,正常狀態(tài)和高亮狀態(tài)下,都不被渲染.按鈕位置偏高,設(shè)置圖片內(nèi)邊距.

2.與實例程序?qū)Ρ?發(fā)現(xiàn)系統(tǒng)的按鈕沒有高亮狀態(tài),所以我們需要自定義按鈕.

自定義按鈕,我們用懶加載的方法,需要注意的是:系統(tǒng)的tabbarbutton不刪除,起到一個占位的作用,但必須設(shè)置vc2.tabBarItem.enabled=NO;button讓它自適應(yīng)tabbar分配的尺寸 ? 在viewDidLoad中設(shè)置button的位置為tabBar 中心點

Q:設(shè)置導(dǎo)航條的內(nèi)容 ? (系統(tǒng)的Item都是模型)

棧頂控制器決定導(dǎo)航條顯示的內(nèi)容,導(dǎo)航控制器不能決定(棧頂控制器是顯示在外面的view)

bug:在我們設(shè)置導(dǎo)航條按鈕后,超出按鈕范圍也能被點擊

分析:包裝成UIBarButtonItem出現(xiàn)問題

解決辦法:butto外面包裝一個UIView,再添加給UIBarButtonItem

導(dǎo)航條的內(nèi)容每個控制器都需要設(shè)置按鈕,抽取一個分類方法,方便調(diào)用.

按鈕的選中狀態(tài)必須通過代碼來實現(xiàn),其他設(shè)置無效.

bug:還沒有要顯示界面的時候,view已經(jīng)被加載.

解決:將各控制器的view背景設(shè)置交給各控制器自己去設(shè)置,這樣完成懶加載.且不會干擾后面的設(shè)置.

W:跳轉(zhuǎn)設(shè)置界面

push操作,跳轉(zhuǎn)界面后隱藏底部tabbar欄,必須要在push之前進(jìn)行設(shè)置,hidesButtonWhenPush = YES;

重新設(shè)置系統(tǒng)提供的返回按鈕: 由當(dāng)前控制器進(jìn)行管理 ?frame不是我們想要的,設(shè)置UIEdgeInsetsMaken內(nèi)邊距

因為每個界面都一樣,需要跳轉(zhuǎn)返回功能,所以返回按鈕可以統(tǒng)一配置

注意:統(tǒng)一配置會遇到的bug:

根控制器左邊按鈕,被返回按鈕覆蓋

設(shè)置時需要進(jìn)行一個判斷,判斷該控制器是否為根控制器

判斷 childViewControllers是否為空,如果為空則證明為根控制器,不需要設(shè)置返回按鈕.

注意:不能判斷當(dāng)前控制器是否為數(shù)組中childView[0],只有完成push操作時,數(shù)組才不為空,此判斷無效.

E:全局控制器都被返回按鈕覆蓋

控制器沒有遵從懶加載原則,很有可能是main中對子控制器進(jìn)行了設(shè)置,從而導(dǎo)致子控制器的view先被加載,也就是導(dǎo)航控制器的內(nèi)容先被設(shè)置,而回到main中,initwith又會調(diào)用重寫的push方法,對導(dǎo)航條內(nèi)容進(jìn)行了覆蓋.解決:將屬于各自控制器的設(shè)置放到各自自己的控制器中設(shè)置.

滑動返回功能 ? Q:上一篇中有詳細(xì)代碼解析此功能,請移步.

ios7之后,導(dǎo)航控制器自帶滑動返回功能,且是邊緣側(cè)滑返回功能.

我們修改了系統(tǒng)自帶的返回按鈕,導(dǎo)致功能失效.

分析:代理實現(xiàn)手勢的方法,可能是代理讓手勢失效了

代理在這里的作用是一個通知功能,滑動方法的實現(xiàn)在手勢中

當(dāng)我們沒有使用自定義按鈕時,系統(tǒng)默認(rèn)側(cè)滑返回的實現(xiàn),且在根控制器中不能實現(xiàn),這里的消息傳遞由代理實現(xiàn)

當(dāng)我們使用自定義按鈕的時候,系統(tǒng)的默認(rèn)代理會通知手勢,此觸摸事件不能實現(xiàn),所以清空代理讓他按照默認(rèn)方法處理,這個時候邊緣側(cè)滑功能就實現(xiàn)了.

需求:全屏側(cè)滑返回的實現(xiàn)

/*打印手勢interactivePopGestureRecognizer(交互返回)

; target= <(action=handleNavigationTransition:, target=<_UINavigationInteractiveTransition 0x7f9a4d214270>)>>

打印interactivePopGestureRecognizer.delegate代理

<_UINavigationInteractiveTransition: 0x7fda886183b0>

這兩個target時同一個類,但不是同一個對象.

*/

干掉系統(tǒng)的手勢:self.interactivePopGestureRecognizer.enabled=NO;

因為_UINavigationInteractiveTransition 是私有屬性,拿不到這個對象,但是因為手勢的代理跟target屬于同一個類型,可以用代理對象代替.

創(chuàng)建自己的滑動手勢:idtarget =self.interactivePopGestureRecognizer.delegate;

調(diào)用系統(tǒng)的滑動方法:handleNavigationTransition:

UIPanGestureRecognizer*pan = [[UIPanGestureRecognizeralloc]initWithTarget:targetaction:@selector(handleNavigationTransition:)];

實現(xiàn)自己的手勢,添加到NavigationController 的view上

[self.viewaddGestureRecognizer:pan];

設(shè)置代理,實現(xiàn)代理方法,控制手勢什么時候觸發(fā)

pan.delegate=self;

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末奥额,一起剝皮案震驚了整個濱河市坐昙,隨后出現(xiàn)的幾起案子刺啦,更是在濱河造成了極大的恐慌愿伴,老刑警劉巖锦爵,帶你破解...
    沈念sama閱讀 217,657評論 6 505
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件垄分,死亡現(xiàn)場離奇詭異影锈,居然都是意外死亡延曙,警方通過查閱死者的電腦和手機(jī)豌鹤,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,889評論 3 394
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來枝缔,“玉大人布疙,你說我怎么就攤上這事蚊惯。” “怎么了灵临?”我有些...
    開封第一講書人閱讀 164,057評論 0 354
  • 文/不壞的土叔 我叫張陵截型,是天一觀的道長。 經(jīng)常有香客問我儒溉,道長宦焦,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,509評論 1 293
  • 正文 為了忘掉前任顿涣,我火速辦了婚禮波闹,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘涛碑。我一直安慰自己精堕,他們只是感情好,可當(dāng)我...
    茶點故事閱讀 67,562評論 6 392
  • 文/花漫 我一把揭開白布锌唾。 她就那樣靜靜地躺著,像睡著了一般夺英。 火紅的嫁衣襯著肌膚如雪晌涕。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,443評論 1 302
  • 那天痛悯,我揣著相機(jī)與錄音余黎,去河邊找鬼。 笑死载萌,一個胖子當(dāng)著我的面吹牛惧财,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播扭仁,決...
    沈念sama閱讀 40,251評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼垮衷,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了乖坠?” 一聲冷哼從身側(cè)響起搀突,我...
    開封第一講書人閱讀 39,129評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎熊泵,沒想到半個月后仰迁,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,561評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡顽分,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,779評論 3 335
  • 正文 我和宋清朗相戀三年徐许,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片卒蘸。...
    茶點故事閱讀 39,902評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡雌隅,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情澄步,我是刑警寧澤冰蘑,帶...
    沈念sama閱讀 35,621評論 5 345
  • 正文 年R本政府宣布,位于F島的核電站村缸,受9級特大地震影響祠肥,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜梯皿,卻給世界環(huán)境...
    茶點故事閱讀 41,220評論 3 328
  • 文/蒙蒙 一仇箱、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧东羹,春花似錦剂桥、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,838評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至冤议,卻和暖如春斟薇,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背恕酸。 一陣腳步聲響...
    開封第一講書人閱讀 32,971評論 1 269
  • 我被黑心中介騙來泰國打工堪滨, 沒想到剛下飛機(jī)就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人蕊温。 一個月前我還...
    沈念sama閱讀 48,025評論 2 370
  • 正文 我出身青樓袱箱,卻偏偏與公主長得像,于是被迫代替她去往敵國和親义矛。 傳聞我的和親對象是個殘疾皇子发笔,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 44,843評論 2 354

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