項(xiàng)目

打開app,要把數(shù)據(jù)顯示在首頁上篱竭,就要把參數(shù)封裝到模型里面去,變?yōu)樽值洳匠瘢俳?jīng)過工具類里面的相關(guān)操作掺逼,形成字典給AFN當(dāng)參數(shù)上傳。AFN把請(qǐng)求下來的NSData二進(jìn)制轉(zhuǎn)換為JSON數(shù)據(jù)瓤介,也就是字典吕喘,

父子控制器
之前的做法是用strong三個(gè)控制器,各自初始化后刑桑,點(diǎn)擊按鈕跳轉(zhuǎn)兽泄,并且remove其它控制器。現(xiàn)在換一個(gè)做法漾月,【self addchild病梢。。◎涯埃】觅彰,也是強(qiáng)指針。就會(huì)添加到一個(gè)數(shù)組中钮热,只要self在填抬,控制器就在。不管怎么做都要設(shè)置table的contenSize隧期,還把全部?jī)?nèi)容都顯示出來飒责。再從數(shù)組中取出控制器。
cell的高度調(diào)大仆潮,在顯示clearcolor宏蛉,這樣就有間距了。
吐槽里面發(fā)布自己的東西是 新建一個(gè)viewController,但是有導(dǎo)航欄性置,所以是一個(gè)nagationControl的rootViewCon為新建的控制器拾并。但是項(xiàng)目里面這個(gè)是push的一個(gè)控制器,不用這么弄了鹏浅。
想要讓一行l(wèi)abel顯示不一樣的字體和顏色嗅义,用NS

鍵盤

封裝了一個(gè)view ControllerToolBar

發(fā)布吐槽里面是UITextView,但是沒有plach這個(gè)屬性隐砸,怎么弄才能顯示出文字效果之碗,在等我們輸入文字后消失,并且為什么textView直接在x=64的位置季希,按鈕就是在0 0的位置褪那。textView繼承自scrollView,里面有contentInsize的top默認(rèn)為64胖眷,我們要擁有它武通,在打印就發(fā)現(xiàn)是64.scrollView面有個(gè)屬性是automatiocallyAdjustScrollViewInset的bool值霹崎,默認(rèn)是yes珊搀。當(dāng)scrollView遇到Nav,UITab等空間尾菇,會(huì)默認(rèn)設(shè)置scrollVIew的contentInset境析。
uitextField
文字永遠(yuǎn)一行,不能多行派诬。
有placehoder屬性設(shè)置站位文字
繼承自UIcontrol
監(jiān)聽行為:設(shè)置代理劳淆;addTarget;通知:UITextFieldTextDidChangeNotification.
UITextView
能顯示任意文字,不能設(shè)置站位文字默赂。繼承UIScrol沛鸵,監(jiān)聽行為設(shè)置代理;通知。
自定義一個(gè)UITextView曲掰,里面設(shè)置兩個(gè)屬性copy 字符串placehoder疾捍,和strong Uicolor文字顏色的。
多種方法實(shí)現(xiàn)栏妖,一種是label一種是drawRect乱豆。在draw方法中,用字典加NSFontAttribute設(shè)置字體大小吊趾,畫文字的方法是drawInRect宛裕。。withAtt 论泛。 而要監(jiān)聽文字的話不要設(shè)置delegate揩尸,設(shè)計(jì)角度看代理是讓別人監(jiān)聽,而且外面要是再有一個(gè)delegate的話會(huì)覆蓋孵奶。
這樣就用通知疲酌,NotificationCenter addOberserver方法。在這里的selector方法中調(diào)用 【self setNeedsDisplay】會(huì)調(diào)用drawRect方法了袁,在里面判斷self.hasText有沒有值朗恳。
有幾個(gè)bug,在外面改屬性不好使载绿,要在自定義里面從寫屬性的set方法粥诫,從寫setNeedsDisplay。有setFont崭庸;setText等方法從寫怀浆。之后就是在里面發(fā)送網(wǎng)絡(luò)請(qǐng)求,根據(jù)參數(shù)發(fā)文字怕享。

設(shè)置鍵盤的話是在控制器中選擇self.textView.inputView屬性而self.textView.inputAccessoryView是設(shè)置顯示在鍵盤頂部的內(nèi)容执赡。自定義一個(gè)工具條繼承UIView,在類里寫一個(gè)創(chuàng)建按鈕的方法函筋。要想設(shè)置按鈕的位置沙合,在layoutSubviews方法里面,顯示工具條沒看完跌帐。

這個(gè)項(xiàng)目里擁有兩個(gè)自定義的鍵盤頂部?jī)?nèi)容首懈;有個(gè)方法是成為第一響應(yīng)者,能輸入文本的控件一旦成為第一響應(yīng)者谨敛,就會(huì)叫出相應(yīng)的鍵盤究履,【textView becomeFirstResponder】

有一個(gè)頂部是相冊(cè)和表情按鈕,我們想要監(jiān)聽他們的點(diǎn)擊事件脸狸,初始化是在initWithFrame中最仑。這個(gè)事情應(yīng)該是控制器做的,所以在ControllerToolBar中設(shè)置了代理,通過方法來實(shí)現(xiàn)按鈕的點(diǎn)擊,有一個(gè)weak類型的遵守協(xié)議的屬性泥彤。協(xié)議里面是的參數(shù)是工具類對(duì)象和索引紊搪,然后再當(dāng)前控制器中去設(shè)置代理,就是控件告訴控制器全景,然后控制器去做耀石。這樣就在控制器中實(shí)現(xiàn)的協(xié)議方法中去實(shí)現(xiàn)功能;其中一個(gè)是UIImagePickerController爸黄,有個(gè)一個(gè)屬性是是sourceYype滞伟,可以選擇是照相機(jī)還是相冊(cè),加一個(gè)判斷要是不是想打開的就return炕贵,還要實(shí)現(xiàn)這個(gè)類的一個(gè)協(xié)議方法梆奈,imagepicker... didFinsh方法,在方法里面實(shí)現(xiàn)dismiss方法称开,并且有一個(gè)參數(shù)是info能得到相冊(cè)里面的圖片亩钟。有一個(gè)方法能實(shí)現(xiàn)吧image寫入到相冊(cè)里面就是UIImageWriteToSaved..;assisLibabry什么庫能實(shí)現(xiàn)圖片圖片器鳖轰。

繼承一個(gè)UIView的表情類清酥,是一個(gè)scrollView,還有一個(gè)pageControl就是表情鍵盤蕴侣。想切換鍵盤的話在按鈕的實(shí)現(xiàn)方法中switchkeybord中用if判斷焰轻,是想知道現(xiàn)在是哪一個(gè)鍵盤,是系統(tǒng)還是自定義昆雀,切換就看inputVIew這個(gè)屬性是不是nil辱志。是的話彈系統(tǒng)自帶的,要不就是self.textView.inputView= 表情鍵盤;系統(tǒng)自帶鍵盤的高度是216.
想要換表情鍵盤就先退出的endEditing:YES狞膘,系統(tǒng)鍵盤就是設(shè)立為第一響應(yīng)者揩懒。要一個(gè)動(dòng)畫效果的彈出鍵盤,dispatch——after()……{
【UIVIew animatewithDuration:duration animations】
【self.textVIew becomeFirstResponder】
} 先固定pageController的高度挽封,numberOfPages屬性已球。scrollView里面的按鈕是一個(gè)挨一個(gè)的,為了方便計(jì)算用一個(gè)UIView加載到上面场仲,然后計(jì)算后面幾個(gè)和悦,pageEnable = yes退疫。輸出plist文件的數(shù)據(jù)個(gè)數(shù)渠缕,用數(shù)據(jù)算numberOfPages。
加載表情數(shù)據(jù)褒繁,就是plist文件亦鳞,讀取路徑【NSBundle main】pathForResourse;把文件中的字典轉(zhuǎn)模型,用一個(gè)數(shù)組就存,用懶加載燕差,用一個(gè)方法self.enmtions = [表情類型 objextArrayWithKeyValuesArray arrayWithCOntentsOfpath],但是frame的設(shè)置一般是在layoutSubView里面遭笋,但是在里面設(shè)置的話就會(huì)懶加載一次,對(duì)我這個(gè)沒有影響徒探。如何把數(shù)據(jù)加載上去瓦呼,利用數(shù)組。每一頁都有固定的個(gè)數(shù)测暗,那么久切割數(shù)組里的數(shù)據(jù)pageVIew.emotions = [emotions subrraryWithRange:] 結(jié)局?jǐn)?shù)組越界的方法央串,NSUInter left = emotions.count -range.location;
if(left >= 每頁的個(gè)數(shù))}
range.length = 每頁的個(gè)數(shù);
|else{
range.length = left碗啄;
}
在數(shù)組初始化中[btn setImageName :emotion.png],這樣圖片就出來了质和。frame設(shè)置在相冊(cè)里面。在pageView里面監(jiān)聽點(diǎn)擊事件稚字,

取出最上層window
UIWindow *window = [UIApplication shareApplication].window lastObject];
[widnow addSubiew:self.VIew];
是插入到textView饲宿,那么協(xié)議的話要有兩層,這樣的: 話用通知傳胆描,把表情放到字典里去瘫想,[Notification postNotificationName : Object: userInfo:]
表情選中的通知[Notification addObserver select name object:],這樣控制器就知道了,插入光標(biāo)所在【textView insertText:emotion.chs】;單獨(dú)設(shè)置一個(gè)刪除 按鈕昌讲,加入到數(shù)組中殿托,在for循環(huán)中給frame。要想實(shí)現(xiàn)刪除功能剧蚣,設(shè)一個(gè)通知支竹,告訴textView,在通知的選擇器的方法中實(shí)現(xiàn)[self.textView delteBackward];是往回刪的意思鸠按。

側(cè)拉實(shí)現(xiàn)
窗口的跟控制器礼搁,有個(gè)左側(cè)菜單,還有一個(gè)導(dǎo)航控制器的view目尖,這樣一挪就看到左側(cè)菜單了馒吴。所以根控制器上有兩個(gè)控件。點(diǎn)擊菜單按鈕轉(zhuǎn)換控制器
一個(gè)父控制器瑟曲,其他都是小控制器饮戳。想要自動(dòng)設(shè)置文字寬高,NSFontAttributeName當(dāng)一個(gè)參數(shù) [title boundingRectWithSize:];
考慮了用frame來做洞拨,但是一旦變小里面的控件就會(huì)擁擠了扯罐。
在手勢(shì)方法中如何讓控制器變小還帶動(dòng)畫效果,
[UIView animatieWithDuration:2.0 animations:^{
縮放比例,一遍縮放一遍往右邊挪
CGFloat scale = 300.0/[UIScreen mainScreen].bounds.size.height;
菜單左邊的間距
CGFloat leftMenuMargin = [UIScreen main ].bounds.size.width *(1 - scrale) *0.5;

self.navigationCOntroller.view.trasfrom = CGAffineTramsforMakeScale(0.5,0.5)
}]
菜單里的按鈕點(diǎn)擊切換控制器:
先把控制器加到數(shù)組中去,數(shù)組是由順序的烦衣,那么在view建立個(gè)協(xié)議用于傳遞消息歹河,當(dāng)在C中實(shí)現(xiàn)協(xié)議時(shí)掩浙,而這里要注意下當(dāng)我把新的控制器添加都愛上面去時(shí),舊的下面的控制器要挪開秸歧,不是銷毀厨姚。要不移開會(huì)耗費(fèi)資源渲染。這樣就要添加一個(gè)參數(shù)键菱,是之前的控制器的index值谬墙。并且點(diǎn)擊按鈕時(shí)不是push一個(gè)頁面出來而是從縮小的那個(gè)頁面再變大回來。就是把舊的transform給新的transform经备,并且把transform消除芭梯,照片

兩個(gè)bug
1.在把trasrom變回來之后有個(gè)問題蒙版還再上面所以要點(diǎn)擊兩下,設(shè)為屬性remov
2.導(dǎo)航欄從64 -44 - 64 會(huì)有黑條
一個(gè)導(dǎo)航控制器的view第一次顯示到它的父控件上時(shí)弄喘,如果transform的縮放值被改了玖喘,上面的20高度當(dāng)時(shí)是不會(huì)出來的。
這樣的話先顯示新的view蘑志,在改動(dòng)transf
沒什么關(guān)系的

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末累奈,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子急但,更是在濱河造成了極大的恐慌澎媒,老刑警劉巖,帶你破解...
    沈念sama閱讀 219,366評(píng)論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件波桩,死亡現(xiàn)場(chǎng)離奇詭異戒努,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)镐躲,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,521評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門储玫,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人萤皂,你說我怎么就攤上這事撒穷。” “怎么了裆熙?”我有些...
    開封第一講書人閱讀 165,689評(píng)論 0 356
  • 文/不壞的土叔 我叫張陵端礼,是天一觀的道長(zhǎng)。 經(jīng)常有香客問我入录,道長(zhǎng)蛤奥,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,925評(píng)論 1 295
  • 正文 為了忘掉前任僚稿,我火速辦了婚禮凡桥,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘贫奠。我一直安慰自己唬血,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,942評(píng)論 6 392
  • 文/花漫 我一把揭開白布唤崭。 她就那樣靜靜地躺著拷恨,像睡著了一般。 火紅的嫁衣襯著肌膚如雪谢肾。 梳的紋絲不亂的頭發(fā)上腕侄,一...
    開封第一講書人閱讀 51,727評(píng)論 1 305
  • 那天,我揣著相機(jī)與錄音芦疏,去河邊找鬼冕杠。 笑死,一個(gè)胖子當(dāng)著我的面吹牛酸茴,可吹牛的內(nèi)容都是我干的分预。 我是一名探鬼主播,決...
    沈念sama閱讀 40,447評(píng)論 3 420
  • 文/蒼蘭香墨 我猛地睜開眼薪捍,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼笼痹!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起酪穿,我...
    開封第一講書人閱讀 39,349評(píng)論 0 276
  • 序言:老撾萬榮一對(duì)情侶失蹤凳干,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后被济,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體救赐,經(jīng)...
    沈念sama閱讀 45,820評(píng)論 1 317
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,990評(píng)論 3 337
  • 正文 我和宋清朗相戀三年只磷,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了经磅。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 40,127評(píng)論 1 351
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡钮追,死狀恐怖馋贤,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情畏陕,我是刑警寧澤配乓,帶...
    沈念sama閱讀 35,812評(píng)論 5 346
  • 正文 年R本政府宣布,位于F島的核電站惠毁,受9級(jí)特大地震影響犹芹,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜鞠绰,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,471評(píng)論 3 331
  • 文/蒙蒙 一腰埂、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧蜈膨,春花似錦屿笼、人聲如沸牺荠。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,017評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽休雌。三九已至,卻和暖如春肝断,著一層夾襖步出監(jiān)牢的瞬間杈曲,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,142評(píng)論 1 272
  • 我被黑心中介騙來泰國(guó)打工胸懈, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留担扑,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 48,388評(píng)論 3 373
  • 正文 我出身青樓趣钱,卻偏偏與公主長(zhǎng)得像涌献,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子首有,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,066評(píng)論 2 355

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