完整Swift項目(模擬微博)演練、五(.End)

我將整個項目的復習拆分成了幾個部分, 每完成一部分我都會提交一次代碼, 大家根據所復習到的部分, 檢出對應的分支來看代碼就可以了, 代碼中的注釋已經十分詳盡了, 有問題或者疑惑大家可以隨時留言溝通.
項目地址

知識點匯總

  1. iOS-自定義表情鍵盤
  2. iOS-通過上下文對圖片壓縮圖片
  3. Alamofire上傳文件
  4. 自定義UITextView 添加加在Vc 上, 通過對不同事件的監(jiān)聽來理解代理
  5. 通知(Notification)里面的數據類型 轉成結構體或基本數據類型來使用
  6. UIStackView
  7. textView切換自定義鍵盤的邏輯分析 ->inputView
  8. UIPageControl設置默認和選中顏色, 需要使用KVC
  9. 通過tag獲取view 的方法
  10. 表情上屏
4. 自定義UITextView 添加加在Vc 上, 通過對不同事件的監(jiān)聽來理解代理
  1. 代理是一對一的, 當多處使用同一代理是, 就會出現問題, 也就是說會和遵循代理的先后順序有關, 也就會出現邏輯問題, 導致代理使用不正確.
  2. 當同意代理已經被使用, 且同時需要進行監(jiān)聽, 就可以代理+通知配合來使用.
    代理+通知
5. 通知(Notification)里面的數據類型 轉成結構體或基本數據類型來使用
// 監(jiān)聽鍵盤的frame將要發(fā)生改變
@objc func keyboardWillChangeFrame(noti: Notification){
    // 判斷userInfo是否為nil 是否可以轉成字典
    guard let userInfo = noti.userInfo as? [String: Any] else{
        return
    }
    // 獲取鍵盤的frame
    // MARK: - 通知里面的數據類型轉結構體, 一般使用NSValue做橋接
    let frame = (userInfo[UIResponder.keyboardFrameEndUserInfoKey] as! NSValue).cgRectValue
    // 獲取鍵盤動畫時間
    // MARK: - 通知里面的數據轉換為double,  一般用NSNumber做橋接
    let duration = (userInfo[UIResponder.keyboardAnimationDurationUserInfoKey] as! NSNumber).doubleValue
}
6. UIStackView
  • UIStackView ios 9 以后的新控件
  • 是一個容器視圖
  • 特點: 不必為子控件逐一設置約束
// 添加子控件
open func addArrangedSubview(_ view: UIView)
// addSubview(<#T##view: UIView##UIView#>) 添加不上
// 設置基本屬性, 布局方向、模式即可, 就會自動為你布局
// 布局方式 - (垂直或者水平)
axis = .horizontal
// 填充方式 - 控件評分區(qū)域
distribution = .fillEqually
7. textView切換自定義鍵盤的邏輯分析 ->inputView
// 切換鍵盤 -> 表情鍵盤/文字鍵盤
func switchKeyboard(){
    // 如果inputView == nil 就代表是系統(tǒng)鍵盤 改成自定義鍵盤
    if self.composeTextView.inputView == nil {
        self.composeTextView.inputView = self.emoticonKeyboardView
    }else {
        // 如果inputView != nil 就代表你設置了自定義鍵盤 改成系統(tǒng)鍵盤
        self.composeTextView.inputView = nil
    }
    // 開啟第一響應
    self.composeTextView.becomeFirstResponder()
    // 刷新
    self.composeTextView.reloadInputViews()
}
8. UIPageControl設置默認和選中顏色, 需要使用KVC
    // 懶加載分頁指示器
    private lazy var pageControl: UIPageControl = {
        let view = UIPageControl()
        // 設置總頁數
        view.numberOfPages = 4
        // 當前頁數
        view.currentPage = 1
        // 設置默認圖片(使用KVC, 對兩個只讀屬性賦值)
        view.setValue(UIImage(named: "compose_keyboard_dot_normal"), forKey: "pageImage")
        // 這種方式設置圖片, 放圖圖片觀察, 圖片右側被擠出來兩個尖角, 有兩個毛刺
        //        view.pageIndicatorTintColor = UIColor(patternImage: UIImage(named: "compose_keyboard_dot_normal")!)
        // 設置選中圖片(KVC)
        view.setValue(UIImage(named: "compose_keyboard_dot_selected"), forKey: "currentPageImage")
        //        view.currentPageIndicatorTintColor = UIColor(patternImage: UIImage(named: "compose_keyboard_dot_selected")!)
        view.isUserInteractionEnabled = false
        // 如果UIPageControl 總頁數為1的時候不顯示
        view.hidesForSinglePage = true
        return view
    }()
9. 通過tag獲取view 的方法
open func viewWithTag(_ tag: Int) -> UIView?
10. 表情上屏
  1. Emoji表情就是16進制字符串,
  2. 圖片表情的發(fā)布上屏: 發(fā)布圖片表情, 其實就是發(fā)送圖片表情的描述信息到后臺, 后臺再給出圖片, 顯示在發(fā)布的微博中.
  • 富文本中都可以正常顯示

.End

?著作權歸作者所有,轉載或內容合作請聯系作者
  • 序言:七十年代末隙笆,一起剝皮案震驚了整個濱河市吐限,隨后出現的幾起案子,更是在濱河造成了極大的恐慌漂坏,老刑警劉巖,帶你破解...
    沈念sama閱讀 212,383評論 6 493
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現場離奇詭異顶别,居然都是意外死亡谷徙,警方通過查閱死者的電腦和手機,發(fā)現死者居然都...
    沈念sama閱讀 90,522評論 3 385
  • 文/潘曉璐 我一進店門驯绎,熙熙樓的掌柜王于貴愁眉苦臉地迎上來完慧,“玉大人,你說我怎么就攤上這事剩失∏幔” “怎么了?”我有些...
    開封第一講書人閱讀 157,852評論 0 348
  • 文/不壞的土叔 我叫張陵拴孤,是天一觀的道長脾歧。 經常有香客問我,道長演熟,這世上最難降的妖魔是什么鞭执? 我笑而不...
    開封第一講書人閱讀 56,621評論 1 284
  • 正文 為了忘掉前任,我火速辦了婚禮芒粹,結果婚禮上兄纺,老公的妹妹穿的比我還像新娘。我一直安慰自己是辕,他們只是感情好囤热,可當我...
    茶點故事閱讀 65,741評論 6 386
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著获三,像睡著了一般旁蔼。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上疙教,一...
    開封第一講書人閱讀 49,929評論 1 290
  • 那天棺聊,我揣著相機與錄音,去河邊找鬼贞谓。 笑死限佩,一個胖子當著我的面吹牛,可吹牛的內容都是我干的裸弦。 我是一名探鬼主播祟同,決...
    沈念sama閱讀 39,076評論 3 410
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼理疙!你這毒婦竟也來了晕城?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 37,803評論 0 268
  • 序言:老撾萬榮一對情侶失蹤窖贤,失蹤者是張志新(化名)和其女友劉穎砖顷,沒想到半個月后贰锁,有當地人在樹林里發(fā)現了一具尸體,經...
    沈念sama閱讀 44,265評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡滤蝠,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 36,582評論 2 327
  • 正文 我和宋清朗相戀三年豌熄,在試婚紗的時候發(fā)現自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片物咳。...
    茶點故事閱讀 38,716評論 1 341
  • 序言:一個原本活蹦亂跳的男人離奇死亡锣险,死狀恐怖,靈堂內的尸體忽然破棺而出览闰,到底是詐尸還是另有隱情囱持,我是刑警寧澤,帶...
    沈念sama閱讀 34,395評論 4 333
  • 正文 年R本政府宣布焕济,位于F島的核電站,受9級特大地震影響盔几,放射性物質發(fā)生泄漏晴弃。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 40,039評論 3 316
  • 文/蒙蒙 一逊拍、第九天 我趴在偏房一處隱蔽的房頂上張望上鞠。 院中可真熱鬧,春花似錦芯丧、人聲如沸芍阎。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,798評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽谴咸。三九已至,卻和暖如春骗露,著一層夾襖步出監(jiān)牢的瞬間岭佳,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,027評論 1 266
  • 我被黑心中介騙來泰國打工萧锉, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留珊随,地道東北人。 一個月前我還...
    沈念sama閱讀 46,488評論 2 361
  • 正文 我出身青樓柿隙,卻偏偏與公主長得像叶洞,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子禀崖,可洞房花燭夜當晚...
    茶點故事閱讀 43,612評論 2 350

推薦閱讀更多精彩內容

  • 那一年衩辟,女孩兒以優(yōu)等生的成績入學,班主任將她與男孩兒分配成同桌的位置帆焕,男孩兒很活潑惭婿,總喜歡打打鬧鬧不恭,女孩兒仍然是...
    若何大大閱讀 202評論 0 1
  • 李賀有一句詩,“寶枕垂云選春夢”财饥。錢鐘書對這句詩極為激賞换吧,認為“選”字用得好,可以說是筆補造化钥星。試想沾瓦,夢不由人,求...
    張舟子閱讀 412評論 0 1
  • 鴛鴦雙棲蝶雙飛 滿園春色惹人醉 悄悄問女兒 女兒賢不賢 蝴蝶美不美 鴛鴦雙棲蝶雙飛 滿園春色惹人醉 悄悄問女兒 女...
    紫燕_05db閱讀 282評論 0 0
  • 今天做的最用心的事就是用了幾段長長的話給我媽解釋即將參加的一個活動谦炒。 夜晚給她說的時候只是想分享給他贯莺,因為我午休收...
    微光渡閱讀 494評論 0 1