如絲般順滑的微信朋友圈(點贊,評論,圖文混排表情,...

[復制鏈接]
來自: Waynezxcv 分類: iOS精品源碼 上傳時間: 2016-5-26 01:21:37
Tag:微信 朋友圈 coretext Gallop

項目介紹:

文:waynezxcv

Gallop --- 異步繪制排版引擎,支持布局預加載緩存、支持圖文混排顯示,支持添加鏈接、支持自定義排版,自動布局。 只需要少量簡單代碼,就可以快速構建一個性能相當優秀(滾動時幀數60)的圖文混排界面。

Gallop v0.2.1
Gallop --- 異步繪制排版引擎,支持布局預加載緩存、支持圖文混排顯示,支持添加鏈接、支持自定義排版,自動布局。 只需要少量簡單代碼,就可以構建一個性能相當優秀(滾動時幀數60)的圖文混排界面。

Features
  • 支持文本布局繪制預加載,并使用異步繪制的方式,保持界面的流暢性
  • 支持富文本,圖文混排顯示,支持行間距 字間距,設置行數,自適應高度
  • 支持添加屬性文本,自定義鏈接
  • 支持在子線程圓角圖片,并避免離屏渲染
  • 支持通過設置約束的方式自動布局
  • API簡單,只需設置簡單的屬性,其余交給Gallop就好啦。


Requirements
使用Gallop實現網絡圖片加載部分依賴于SDWebImage(https://github.com/rs/SDWebImage) 'SDWebImage', '~>3.7'

Who Use
適合于想要快速搭建類似微信朋友圈、新浪微博Timeline等復雜的圖文混排滾動界面,并對于滾動流暢性性能有一定要求的情況。

Installation
將Gallop文件夾下的.h及.m文件添加到你的工程當中。
#import "Gallop.h"

Usage
  • API Quickstart



使用示例
1.生成一個文本模型
[Objective-C] 查看源文件 復制代碼
LWTextStorage* textStorage = [[LWTextStorage alloc] init];
textStorage.text = @"waynezxcv";
textStorage.font = [UIFont systemFontOfSize:15.0f];
textStorage.textColor = RGB(113, 129, 161, 1);

/***  為文本添加點擊鏈接事件  ***/
[textStorage addLinkWithData:data
                         inRange:NSMakeRange(0,statusModel.name.length)
                       linkColor:RGB(113, 129, 161, 1)
                  highLightColor:RGB(0, 0, 0, 0.15)];

/***  點擊鏈接回調  ***/
- (void)lwAsyncDisplayView:(LWAsyncDisplayView *)asyncDisplayView didCilickedLinkWithfData:(id)data;

/***  用本地圖片替換掉指定位置的文字  ***/
[textStorage lw_replaceTextWithImage:[UIImage imageNamed:@"img"]
                            contentMode:UIViewContentModeScaleAspectFill
                                imageSize:CGSizeMake(60, 60)
                        alignment:LWTextAttachAlignmentTop
            range:NSMakeRange(webImageTextStorage.text.length - 7, 0)];


/***  用網絡圖片替換掉指定位置的文字  ***/
[textStorage lw_replaceTextWithImageURL:[NSURL URLWithString:@"https://avatars0.githubusercontent.com/u/8408918?v=3&s=460"]
                                            contentMode:UIViewContentModeScaleAspectFill
                                              imageSize:CGSizeMake(60, 60)
                                              alignment:LWTextAttachAlignmentTop
                                                  range:NSMakeRange(webImageTextStorage.text.length - 7, 0)];

/***  用UIView替換掉指定位置的文字  ***/
[textStorage lw_replaceTextWithView:[[UISwitch alloc] initWithFrame:CGRectMake(0, 0, 60.0f, 30.0f)]
                                contentMode:UIViewContentModeScaleAspectFill
                                       size:CGSizeMake(60.0f, 30.0f)
                                  alignment:LWTextAttachAlignmentTop
                                      range:NSMakeRange(1,0)];



2.生成一個圖片模型
[Objective-C] 查看源文件 復制代碼
/***  本地圖片  ***/
LWImageStorage* imamgeStorage = [[LWImageStorage alloc] init];
imamgeStorage.contents = [UIImage imageNamed:@"pic.jpeg"];
imamgeStorage.frame = CGRectMake(textStorage.left, textStorage.bottom + 20.0f, 80, 80);
imamgeStorage.cornerRadius = 40.0f;//設置圓角半徑


/***  網絡圖片  ***/
LWImageStorage* imamgeStorage = [[LWImageStorage alloc] init];
imamgeStorage.contents = [NSURL URLWithString:@"https://avatars0.githubusercontent.com/u/8408918?v=3&s=460"];
imamgeStorage.frame = CGRectMake(textStorage.left, textStorage.bottom + 20.0f, 80, 80);
imamgeStorage.cornerRadius = 40.0f;

/***  點擊圖片回調  ***/
- (void)lwAsyncDisplayView:(LWAsyncDisplayView *)asyncDisplayView didCilickedImageStorage:(LWImageStorage *)imageStorage touch:(UITouch *)touch;



3.設置約束 自動布局
[Objective-C] 查看源文件 復制代碼
[LWConstraintManager lw_makeConstraint:textStorage.constraint.leftMargin(10).topMargin(20).widthLength(40.0f).heightLength(40.0f)];
[LWConstraintManager lw_makeConstraint:imamgeStorage.constraint.leftMarginToStorage(textStorage,10).topMargin(20).widthLength(SCREEN_WIDTH)];




4.生成布局模型
[Objective-C] 查看源文件 復制代碼
LWLayout* layout = [[LWLayout alloc] init];

/***  將LWstorage實例添加到layout當中  ***/
[layout addStorage:textStorage];
[layout addStorage:imamgeStorage];




5.創建LWAsyncDisplayView,并將LWLayout實例賦值給創建LWAsyncDisplayView對象
[Objective-C] 查看源文件 復制代碼
LWAsyncDisplayView* asyncDisplayView = [[LWAsyncDisplayView alloc] initWithFrame:CGRectZero maxImageStorageCount:10];
asyncDisplayView.layout = layout;
[self.view addSubview:asyncDisplayView];




  • 如果需要更加詳細的內容,請看各個頭文件和Demo,有詳細的注釋
  • Demo中有用Gallop構建的微信朋友圈,下載Demo真機調試。



正在不斷完善中...有任何問題請聯系我 [email protected]


DEMO下載:
運行demo可以查看效果,而且在demo中,針對各種文本和圖文的實現都有詳細的用例


相關源碼推薦:

我來說兩句
所有評論(3484)
dagouxionglz 2016-5-26 12:01:55
強烈支持樓主ing……
回復
keliangyao 2016-5-26 13:13:53
我只是路過打醬油的。
回復
沙漠胡楊 2016-5-26 13:15:29
雖不明,但覺厲!
回復
ogqs0493 2016-5-26 13:20:00
很給力,Code4App有你更精彩!
回復
末日孤艦 2016-5-26 13:20:58
雖不明,但覺厲!
回復
ah789go 2016-5-26 14:27:52
感謝分享,Code4App有你更精彩
回復
ah789go 2016-5-26 14:28:31
很給力,Code4App有你更精彩!
回復
陳永輝 2016-5-26 14:49:38
很給力,Code4App有你更精彩!
回復
leisemt 2016-5-26 14:58:12
樓主用心了,內容非常精彩。
回復
提取碼:  下載次數:2469 狀態:已購或VIP 售價:0(原價:10)金錢 下載權限:初級碼農 
47685 13 2469
聯系我們
首頁/微信公眾賬號投稿

帖子代碼編輯/版權問題

QQ:435399051,742864542

如何獲得代碼達人稱號?

代碼貢獻英雄榜
用戶名 下載數
通過郵件訂閱最新 Code4App 信息
上一條 /4 下一條

廣告投放| 廣東互聯網違法和不良信息舉報中心|中國互聯網舉報中心|Github|申請友鏈|手機版|Code4App ( 粵ICP備15117877號-1 )

青龙出海APP下载
广东36选7基本走势走图 安徽十一选五前二走势 安卓能不能下载qq麻将 lg股票代码 大地棋牌唯一官方网下载 云南快乐十分前三直 麻将微信红包提现金 爱玩捕鱼大圣归来真的能赚钱吗? 上海哈灵麻将app下载 秒速赛车全天计划精 球探体育比分app苹果版下载 很好玩的棋牌 黑龙江十一选五结果360 北京11选5最新开 辽宁35选7官网 腾讯欢乐捕鱼蒸汽时代抽奖