iOS 仿網易 APP 介面封裝

發表於2016-06-12

目錄 我是程式碼

  1. 字型放大
  2. 顏色RGBA
  3. 滑塊
  4. 內容型別
  5. 實現效果方法
  6. Layout, 旋轉
  7. CRUD
  8. cocoaPods
  9. 使用
  10. 問答
    個人測試有限, 如果有什麼問題請評論或issue我 GitHub
iOS 仿網易 APP 介面封裝
style.gif

1. 字型放大


 iOS 仿網易 APP 介面封裝
zoom.gif

一開始選擇的是UIButton, 改變UIFont, 效果如上, 如以上下抖動的方式增減, UILable也同樣, 找不到其他方式. 最後用的是縮放, 問題是連UIButton整個控制元件都會縮放, 理想中效果想要只縮放裡面的UILable.

出現的問題 : 不影響視覺效果, 影響可能多的自定義
UIButton 自定義的時候背景色只能設定它的容器->UIScroll
滾動的時候要取原來的x座標,width等

2. 顏色RGBA


一開始仿的是網易新聞的APP, 黑>紅, 想半天沒明白, 後來對照了RGB,
黑 (R:0 G:0 B:0)
紅 (R:0 G:255 B:0) 好了, 問題解決了. 之後就擴充套件了RGBA, 不過本人色弱, 不同值之間轉換時顏色效果我是忽略了

3. 滑塊


扇貝APP, 有變寬度的效果. 還好開始時就想到給滑塊加個容器, 好處就很明顯了, 移動的時候控制容器, 滑塊的寬度重寫容器的setter就可以, 寬度可以自定義, 也可以根據標籤串長度+自定義數值

4. 內容型別


可以的UIViewController 或 UIView , 且兩者巢狀
切換時需要立即重新整理, 我用的是 繼承或Category
如果需要重用UIViewController, 請看 Demo

巢狀時效果
滾動內層時直接調的是外層的UIScroll(鬥魚APP) : 內層.ctScroll.scrollEnabled = NO;
預設調的是內層自己的, 只要是兩個都寫 delegate = self;

5. 實現效果方法


  1. 區分左右滑, 上一個, 下一個 UIButton
  2. 移動點: 滾動內容裡轉化百分比到標籤的UIScrollView.contentOffset ,
    總距離: 兩個UIButton.x 的間距
    每個點變化: RGBA, 滑塊寬度, / 總距離 得到的比例 * 縮放

6. Layout, 旋轉


適配Xib: - (void)layoutSubviews 獲得的frame正確
如果Xib控制元件之前有一個程式碼寫的控制元件 - (void)awakeFromNib 中獲取的frame有效, 如果全是Xib, 獲取的frame就有問題, 哪怕你呼叫

獲取的frame也會出錯, 最後只能重寫程式碼

得到的經驗
初始化只配置資料, - (void)layoutSubviews 配置frame

7. CRUD


黃易的效果, 包括改變完之後直接對比之前的資料

Gif 軟體有點坑, 看不清請看demo

 iOS 仿網易 APP 介面封裝
ver.gif

8. cocoaPods


作為初級程式猿, 秉承能學習就嘗試的原則安裝了下
提供兩個學習連結:
簡書Trunk
Master

更新本地pod庫 : pod repo update
快速依賴但是不更新本地 : pod install --verbose --no-repo-update

9. 使用


GitHub程式碼
pod 'YFLinkageScroll', '~> 1.0.0'

Usage :
#import "YFLinkageScrollView.h"
Xib載入 或程式碼 alloc.init 後

事件

自定義

10. 問答


如果簡書上傳之後能編輯更新, 知道答案後更新

問 : 求diao大的解答下

  1. ARC 下重寫 weak 的 setter, 有沒有問題 ?

  1. NSTimer - (void)invalidate; 之後, 之前加的記憶體沒有減下去, 請看demo裡的 Example 事件跳轉頁面
    POP 回來記憶體什麼時候釋放, 請看 demo裡的 Jump 事件跳轉頁面
    還是我自己寫的方法有問題, 但是用 Leaks 都檢測過了.
  2. 求個視訊轉GIF的好軟體
  3. 不縮放UIButton, 不抖動,實現字型大小的方法

答 :

  1. licecap: 直接錄製成GIF, 清晰度高
    ClieGIF: 視訊轉GIF, 效果要設定, 視訊不能太大
    PicGIF: 視訊轉GIF, 收費的沒試, Lite清晰度一般

相關文章