iOS仿蟬游記圖文排版方法

為了增加應(yīng)用的閱讀體驗(yàn),一種友好的圖文排版必不可少。查看市場(chǎng)上各類應(yīng)用疮跑,大體上有兩種方式來(lái)展現(xiàn)圖文,一種是很簡(jiǎn)單的方式凸舵,即加載H5頁(yè)祸挪,另一種便是根據(jù)事先約定好的數(shù)據(jù)格式使用TableView來(lái)進(jìn)行展現(xiàn)。使用第二種方式為了讓文字段落更加優(yōu)美更具多樣性贞间,也不得用到CoreText贿条。
這兩天查看分析了下蟬游記的圖文排版,忍不住寫了一個(gè)Demo增热。

瀏覽蟬游記圖文展現(xiàn)界面可以發(fā)現(xiàn)整以,其中圖文是以一定格式進(jìn)行排版的。如下圖中藍(lán)線框所示峻仇,它是以幾種類型的cell來(lái)組合展示圖文公黑,比如第一個(gè)框中的cell包含一個(gè)標(biāo)題和一段文字,第二個(gè)框中的cell包含圖片段落文字摄咆。當(dāng)然凡蚜,定義好cell類型之后,還需根據(jù)數(shù)據(jù)的具體格式來(lái)進(jìn)行展現(xiàn)吭从,比如服務(wù)器下發(fā)的某條數(shù)據(jù)僅包含一個(gè)標(biāo)題并沒有文字段落朝蜘,那第一個(gè)框中的cell則只展現(xiàn)標(biāo)題,總之每個(gè)cell需根據(jù)數(shù)據(jù)內(nèi)容調(diào)整布局涩金。

蟬游記圖文中的段落文字十分美觀谱醇,免不了使用CoreText,CoreText的渲染原理可以查閱相關(guān)文檔步做,相關(guān)開源框架Github上也不少副渴,請(qǐng)自行搜索。同時(shí)全度,展現(xiàn)優(yōu)美的文字煮剧,需要加入第三方字體庫(kù),怎么加入請(qǐng)查看相關(guān)資料将鸵。

為了更靈活組裝圖文布局勉盅,cell的種類可以更小粒度定義。本Demo作為參考咨堤,僅定義三種基本的cell類型菇篡,分別是標(biāo)題cell、圖片cell以及文字段落cell一喘,如下圖藍(lán)線框所示驱还。通過這三種基本的cell即可組合很友好的圖文了嗜暴,當(dāng)然,如果頁(yè)面元素較復(fù)雜议蟆,可以定義出更多豐富的cell類型闷沥。相比蟬游記的cell類型定義,我想咐容,cell粒度越小越好舆逃,比如某條數(shù)據(jù)中只包含圖片或者只包含文字時(shí),就不需去特意調(diào)整cell的布局戳粒。

定義好了三種cell路狮,就需要定義一下數(shù)據(jù)格式了。服務(wù)器以定義好的數(shù)據(jù)格式下發(fā)蔚约,客戶端解析后進(jìn)行圖文展現(xiàn)奄妨。數(shù)據(jù)采用JSON格式下發(fā),擬定某條數(shù)據(jù)的格式如下:

    {
        "type":xx,
        "info":{
            "param1":"xxx",
            "param1":"xxx",
            ...
        }
    }

根據(jù)三種cell類型的定義苹祟,本Demo中對(duì)應(yīng)的數(shù)據(jù)格式分別如下:

    {
        "type":0, // 標(biāo)題
        "info":{
            "title":"xxx",
        }
    }

    {
        "type":1,
        "info":{
            "text":"xxx", // 鍛煉文字
            "user":"xxx",  // 用戶名砸抛,如果有則會(huì)以@的方式顯示,無(wú)則不展示
            ...
        }
    }

    {
        "type":2, // 圖片
        "info":{
            "image":"http://xx", //圖片鏈接
            "ratio":xx, // 圖片高寬比
        }
    }

那么树枫,服務(wù)器下發(fā)的是一個(gè)多條基本數(shù)據(jù)組成的列表直焙,如:

    [{
        "type":0,
        "info":{
            "title":"xxx",
        }
    },
    {
        "type":2, // 圖片
        "info":{
            "image":"http://xx", //圖片鏈接
            "ratio":xx, // 圖片高寬比
        }
    },
    ...
    ]

這些工作確定好后,就可開始編寫代碼了砂轻。另外奔誓,為了實(shí)現(xiàn)蟬游記的導(dǎo)航欄變化效果,需要生成對(duì)應(yīng)的高斯模糊圖片舔清,具體實(shí)現(xiàn)細(xì)節(jié)丝里,可參考本文 demo源碼 吧。下圖為demo截圖(有需要的朋友請(qǐng)下載體驗(yàn)哦):

本Demo僅實(shí)現(xiàn)了圖文排版的展開体谒,相對(duì)比較簡(jiǎn)單,但對(duì)于圖文編輯并怎么保存數(shù)據(jù)以及怎樣同步到服務(wù)器就不是這么簡(jiǎn)單了臼婆,分析相關(guān)應(yīng)用目前圖文編輯有使用TableView來(lái)插入圖片文字的抒痒,有使用CoreText框架的,有使用WebView來(lái)實(shí)現(xiàn)的颁褂。

(寫于2016/03/06故响,現(xiàn)同步到簡(jiǎn)書)

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市颁独,隨后出現(xiàn)的幾起案子彩届,更是在濱河造成了極大的恐慌,老刑警劉巖誓酒,帶你破解...
    沈念sama閱讀 219,188評(píng)論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件樟蠕,死亡現(xiàn)場(chǎng)離奇詭異贮聂,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)寨辩,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,464評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門吓懈,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人靡狞,你說我怎么就攤上這事耻警。” “怎么了甸怕?”我有些...
    開封第一講書人閱讀 165,562評(píng)論 0 356
  • 文/不壞的土叔 我叫張陵甘穿,是天一觀的道長(zhǎng)。 經(jīng)常有香客問我梢杭,道長(zhǎng)温兼,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,893評(píng)論 1 295
  • 正文 為了忘掉前任式曲,我火速辦了婚禮妨托,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘吝羞。我一直安慰自己兰伤,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,917評(píng)論 6 392
  • 文/花漫 我一把揭開白布钧排。 她就那樣靜靜地躺著敦腔,像睡著了一般。 火紅的嫁衣襯著肌膚如雪恨溜。 梳的紋絲不亂的頭發(fā)上符衔,一...
    開封第一講書人閱讀 51,708評(píng)論 1 305
  • 那天,我揣著相機(jī)與錄音糟袁,去河邊找鬼判族。 笑死,一個(gè)胖子當(dāng)著我的面吹牛项戴,可吹牛的內(nèi)容都是我干的形帮。 我是一名探鬼主播,決...
    沈念sama閱讀 40,430評(píng)論 3 420
  • 文/蒼蘭香墨 我猛地睜開眼周叮,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼辩撑!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起仿耽,我...
    開封第一講書人閱讀 39,342評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤合冀,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后项贺,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體君躺,經(jīng)...
    沈念sama閱讀 45,801評(píng)論 1 317
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡峭判,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,976評(píng)論 3 337
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了晰洒。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片朝抖。...
    茶點(diǎn)故事閱讀 40,115評(píng)論 1 351
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖谍珊,靈堂內(nèi)的尸體忽然破棺而出治宣,到底是詐尸還是另有隱情,我是刑警寧澤砌滞,帶...
    沈念sama閱讀 35,804評(píng)論 5 346
  • 正文 年R本政府宣布侮邀,位于F島的核電站,受9級(jí)特大地震影響贝润,放射性物質(zhì)發(fā)生泄漏绊茧。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,458評(píng)論 3 331
  • 文/蒙蒙 一打掘、第九天 我趴在偏房一處隱蔽的房頂上張望华畏。 院中可真熱鬧,春花似錦尊蚁、人聲如沸亡笑。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,008評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)仑乌。三九已至,卻和暖如春琴锭,著一層夾襖步出監(jiān)牢的瞬間晰甚,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,135評(píng)論 1 272
  • 我被黑心中介騙來(lái)泰國(guó)打工决帖, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留厕九,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 48,365評(píng)論 3 373
  • 正文 我出身青樓地回,卻偏偏與公主長(zhǎng)得像止剖,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子落君,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,055評(píng)論 2 355

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

  • 發(fā)現(xiàn) 關(guān)注 消息 iOS 第三方庫(kù)、插件亭引、知名博客總結(jié) 作者大灰狼的小綿羊哥哥關(guān)注 2017.06.26 09:4...
    肇東周閱讀 12,107評(píng)論 4 62
  • WebSocket-Swift Starscream的使用 WebSocket 是 HTML5 一種新的協(xié)議绎速。它實(shí)...
    香橙柚子閱讀 23,872評(píng)論 8 183
  • 曾以為,遇見是一件很美妙的事情焙蚓,這件事情會(huì)發(fā)生在特定的時(shí)間纹冤,特別的場(chǎng)景下洒宝,像是萬(wàn)千眾生中的回眸一瞥,四目對(duì)視萌京,滿面...
    繁華未盡閱讀 348評(píng)論 0 0
  • “幼小的心靈知残,開著冷漠的奇葩靠瞎;無(wú)言的雙眸,畫著怪異的圖畫求妹,寶貝我知道乏盐,你有你的天堂,你有你的夢(mèng)想”或許正如歌曲中唱...
    暗黑系狒狒張閱讀 522評(píng)論 0 0
  • 輸入鍵盤設(shè)置 placeHolderTF.keyboardType = UIKeyboardTypeASCIICa...
    然亦傘閱讀 365評(píng)論 0 0