RM新时代网站-首页

電子發(fā)燒友App

硬聲App

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示
創(chuàng)作
電子發(fā)燒友網(wǎng)>電子資料下載>電子資料>FFRouter強大易用的iOS路由庫

FFRouter強大易用的iOS路由庫

2022-06-24 | zip | 0.54 MB | 次下載 | 2積分

資料介紹

授權(quán)協(xié)議 MIT
開發(fā)語言 Objective-C
軟件類型 開源軟件
所屬分類 手機/移動開發(fā)

軟件簡介

FFRouter 是 iOS 中一個強大且易用的 URL 路由庫,支持 URL Rewrite,使 APP 在發(fā)布之后也可以動態(tài)修改相關(guān)路由邏輯。基于匹配查找 URL,效率高。集成和使用都非常簡單!

功能

  • 具備基本的 URL 注冊、Route、取消注冊、打印 Log 等

  • 支持使用通配符(*)注冊 URL

  • 支持 URL Rewrite

  • 支持 Rewrite 時獲取原 URL 參數(shù)或 URLComponents,并可對其進行URL Encode或 Decode

  • 支持通過 URL 獲取 Object

  • 支持 Route URL 時傳遞非常規(guī)對象

  • 支持 Route 一個未注冊的 URL 時統(tǒng)一回調(diào)

安裝

CocoaPods

target?'MyApp'?do
??pod?'FFRouter'
end

運行?pod install

手動安裝

添加其中的?FFRouter?文件夾到自己項目

使用方法

首先

#import?"FFRouter.h"

1、基本使用

/**
?注冊?url

?@param?routeURL?要注冊的?URL
?@param?handlerBlock?URL?被?Route?后的回調(diào)
?*/
+?(void)registerRouteURL:(NSString?*)routeURL?handler:(FFRouterHandler)handlerBlock;

/**
?注冊?URL,通過該方式注冊的?URL?被?Route?后可返回一個?Object

?@param?routeURL?要注冊的?URL
?@param?handlerBlock?URL?被?Route?后的回調(diào),可在回調(diào)中返回一個?Object
?*/
+?(void)registerObjectRouteURL:(NSString?*)routeURL?handler:(FFObjectRouterHandler)handlerBlock;



/**
?判斷?URL?是否可被?Route(是否已經(jīng)注冊)

?@param?URL?要判斷的?URL
?@return?是否可被?Route
?*/
+?(BOOL)canRouteURL:(NSString?*)URL;



/**
?Route?一個?URL

?@param?URL?要?Router?的?URL
?*/
+?(void)routeURL:(NSString?*)URL;

/**
?Route?一個?URL,并帶上額外參數(shù)

?@param?URL?要?Router?的?URL
?@param?parameters?額外參數(shù)
?*/
+?(void)routeURL:(NSString?*)URL?withParameters:(NSDictionary?*)parameters;

/**
?Route?一個?URL,可獲得返回的?Object

?@param?URL?要?Router?的?URL
?@return?返回的?Object
?*/
+?(id)routeObjectURL:(NSString?*)URL;

/**
?Route?一個?URL,并帶上額外參數(shù),可獲得返回的?Object

?@param?URL?要?Router?的?URL
?@param?parameters?額外參數(shù)
?@return?返回的?Object
?*/
+?(id)routeObjectURL:(NSString?*)URL?withParameters:(NSDictionary?*)parameters;



/**
?Route?一個未注冊?URL?時回調(diào)

?@param?handler?回調(diào)
?*/
+?(void)routeUnregisterURLHandler:(FFRouterUnregisterURLHandler)handler;



/**
?取消注冊某個?URL

?@param?URL?要被取消注冊的?URL
?*/
+?(void)unregisterRouteURL:(NSString?*)URL;

/**
?取消注冊所有?URL
?*/
+?(void)unregisterAllRoutes;


/**
?是否顯示?Log,用于調(diào)試

?@param?enable?YES?or?NO,默認為?NO
?*/
+?(void)setLogEnabled:(BOOL)enable;

【備注】

(1)注冊 URL:

[FFRouter?registerRouteURL:@"protocol://page/routerDetails/:id"?handler:^(NSDictionary?*routerParameters)?{
???//Route的URL與本次注冊URL匹配時的回調(diào)??
}];

[FFRouter?registerRouteURL:@"wildcard://*"?handler:^(NSDictionary?*routerParameters)?{
???//Route的URL與本次注冊URL匹配時的回調(diào)??
}];

[FFRouter?registerRouteURL:@"protocol://page/routerObjectDetails"?handler:^(NSDictionary?*routerParameters)?{
???//Route的URL與本次注冊URL匹配時的回調(diào)??
}];

可通過routerParameters獲取 URL 中的參數(shù),routerParameters[FFRouterParameterURLKey]為完整的URL. (2)當需要通過以下方法:

+?(id)routeObjectURL:(NSString?*)URL;

Route 一個 URL 并獲取返回值時,需要使用如下方法注冊 URL:

+?(void)registerObjectRouteURL:(NSString?*)routeURL?handler:(FFObjectRouterHandler)handlerBlock;

并在 handlerBlock 中返回需要返回的 Object,例如:

//注冊并返回必要的值
[FFRouter?registerObjectRouteURL:@"protocol://page/routerObjectDetails"?handler:^id(NSDictionary?*routerParameters)?{
????????NSString?*str?=?@“根據(jù)需要返回必要的Object”;
????????return?str;
????}];
????
//獲取返回的值
NSString?*ret?=?[FFRouter?routeObjectURL:@"protocol://page/routerObjectDetails"];

(3)如果需要傳遞非常規(guī)對象作為參數(shù),如UIImage等,可使用如下方式:

[FFRouter?routeURL:@"protocol://page/routerDetails?nickname=imlifengfeng"?withParameters:@{@"img":[UIImage?imageNamed:@"router_test_img"]}];

2、URL Rewrite

/**
?根據(jù)設(shè)置的?Rules?去?rewrite?一個?URL

?@param?url?將被?rewrite?的?URL
?@return?rewrite?后的?URL
?*/
+?(NSString?*)rewriteURL:(NSString?*)url;

/**
?添加一個?RewriteRule

?@param?matchRule?正則匹配規(guī)則
?@param?targetRule?轉(zhuǎn)換規(guī)則
?*/
+?(void)addRewriteMatchRule:(NSString?*)matchRule?targetRule:(NSString?*)targetRule;

/**
?同時添加多個?RewriteRule,格式必須為:@[@{@"matchRule":@"YourMatchRule",@"targetRule":@"YourTargetRule"},...]

?@param?rules?RewriteRules
?*/
+?(void)addRewriteRules:(NSArray?*)rules;

/**
?移除一個?RewriteRule

?@param?matchRule?將被移除的?matchRule
?*/
+?(void)removeRewriteMatchRule:(NSString?*)matchRule;

/**
?移除所有?RewriteRule
?*/
+?(void)removeAllRewriteRules;

【備注】

(1)可以使用正則添加一條 Rewrite 規(guī)則,例如: 要實現(xiàn)打開 URL:https://www.taobao.com/search/原子彈時,將其攔截,改用本地已注冊的 URL:protocol://page/routerDetails?product=原子彈打開。 首先添加一條 Rewrite 規(guī)則:

[FFRouterRewrite?addRewriteMatchRule:@"(?:https://)?www.taobao.com/search/(.*)"?targetRule:@"protocol://page/routerDetails?product=$1"];

之后在打開URL:https://www.taobao.com/search/原子彈時,將會 Rewrite 到URL:protocol://page/routerDetails?product=原子彈。

[FFRouter?routeURL:@"https://www.taobao.com/search/原子彈"];

(2)可以通過以下方法同時增加多個規(guī)則:

+?(void)addRewriteRules:(NSArray?*)rules;

其中 rules 格式必須為以下格式:

@[@{@"matchRule":@"YourMatchRule1",@"targetRule":@"YourTargetRule1"},
??@{@"matchRule":@"YourMatchRule2",@"targetRule":@"YourTargetRule2"},
??@{@"matchRule":@"YourMatchRule3",@"targetRule":@"YourTargetRule3"},]

(3)Rewrite 規(guī)則中的保留字:

  • 通過?$scheme、$host、$port$path、$query、$fragment?獲取標準 URL 中的相應(yīng)部分。通過$url獲取完整 URL

  • 通過?$1$2、$3...獲取matchRule的正則中使用圓括號取出的參數(shù)

  • $:原變量的值、$$:原變量URL Encode后的值、$#:原變量URL Decode后的值

例如:?https://www.taobao.com/search/原子彈對于Rewrite 規(guī)則(?:https://)?www.taobao.com/search/(.*)

$1=原子彈
$$1=%e5%8e%9f%e5%ad%90%e5%bc%b9

同樣,https://www.taobao.com/search/%e5%8e%9f%e5%ad%90%e5%bc%b9對于Rewrite 規(guī)則(?:https://)?www.taobao.com/search/(.*)

$1=%e5%8e%9f%e5%ad%90%e5%bc%b9
$#1=原子彈

2、FFRouterNavigation

考慮到經(jīng)常用路由配置UIViewController之間的跳轉(zhuǎn),所以增加了額外的工具FFRouterNavigation來更方便地控制UIViewController之間的跳轉(zhuǎn)。具體使用方法如下:

/**
?push?時是否自動隱藏底部TabBar

?@param?hide?是否自動隱藏,默認為?NO
?*/
+?(void)autoHidesBottomBarWhenPushed:(BOOL)hide;



/**
?獲取當前?ViewController

?@return?當前?ViewController
?*/
+?(UIViewController?*)currentViewController;

/**
?獲取當前?NavigationViewController

?@return?return?當前?NavigationViewController
?*/
+?(nullable?UINavigationController?*)currentNavigationViewController;



/**
?Push?ViewController

?@param?viewController?被?Push?的?ViewController
?@param?animated?是否使用動畫
?*/
+?(void)pushViewController:(UIViewController?*)viewController?animated:(BOOL)animated;

/**
?Push?ViewController,可設(shè)置當前?ViewController?是否還保留

?@param?viewController?被?Push?的?ViewController
?@param?replace?當前?ViewController?是否還保留
?@param?animated?是否使用動畫
?*/
+?(void)pushViewController:(UIViewController?*)viewController?replace:(BOOL)replace?animated:(BOOL)animated;

/**
?Push?多個?ViewController

?@param?viewControllers?ViewController?Array
?@param?animated?是否使用動畫
?*/
+?(void)pushViewControllerArray:(NSArray?*)viewControllers?animated:(BOOL)animated;

/**
?present?ViewController

?@param?viewController?被?present?的?ViewController
?@param?animated?是否使用動畫
?@param?completion?回調(diào)
?*/
+?(void)presentViewController:(UIViewController?*)viewController?animated:(BOOL)animated?completion:(void?(^?__nullable)(void))completion;



/**
?關(guān)閉當前?ViewController,push、present?方式通用

?@param?animated?是否使用動畫
?*/
+?(void)closeViewControllerAnimated:(BOOL)animated;

感謝

FFRouter實現(xiàn)方案參考了以下文章,在此表示感謝!

?

下載該資料的人也在下載 下載該資料的人還在閱讀
更多 >

評論

查看更多

下載排行

本周

  1. 1山景DSP芯片AP8248A2數(shù)據(jù)手冊
  2. 1.06 MB  |  532次下載  |  免費
  3. 2RK3399完整板原理圖(支持平板,盒子VR)
  4. 3.28 MB  |  339次下載  |  免費
  5. 3TC358743XBG評估板參考手冊
  6. 1.36 MB  |  330次下載  |  免費
  7. 4DFM軟件使用教程
  8. 0.84 MB  |  295次下載  |  免費
  9. 5元宇宙深度解析—未來的未來-風(fēng)口還是泡沫
  10. 6.40 MB  |  227次下載  |  免費
  11. 6迪文DGUS開發(fā)指南
  12. 31.67 MB  |  194次下載  |  免費
  13. 7元宇宙底層硬件系列報告
  14. 13.42 MB  |  182次下載  |  免費
  15. 8FP5207XR-G1中文應(yīng)用手冊
  16. 1.09 MB  |  178次下載  |  免費

本月

  1. 1OrCAD10.5下載OrCAD10.5中文版軟件
  2. 0.00 MB  |  234315次下載  |  免費
  3. 2555集成電路應(yīng)用800例(新編版)
  4. 0.00 MB  |  33566次下載  |  免費
  5. 3接口電路圖大全
  6. 未知  |  30323次下載  |  免費
  7. 4開關(guān)電源設(shè)計實例指南
  8. 未知  |  21549次下載  |  免費
  9. 5電氣工程師手冊免費下載(新編第二版pdf電子書)
  10. 0.00 MB  |  15349次下載  |  免費
  11. 6數(shù)字電路基礎(chǔ)pdf(下載)
  12. 未知  |  13750次下載  |  免費
  13. 7電子制作實例集錦 下載
  14. 未知  |  8113次下載  |  免費
  15. 8《LED驅(qū)動電路設(shè)計》 溫德爾著
  16. 0.00 MB  |  6656次下載  |  免費

總榜

  1. 1matlab軟件下載入口
  2. 未知  |  935054次下載  |  免費
  3. 2protel99se軟件下載(可英文版轉(zhuǎn)中文版)
  4. 78.1 MB  |  537798次下載  |  免費
  5. 3MATLAB 7.1 下載 (含軟件介紹)
  6. 未知  |  420027次下載  |  免費
  7. 4OrCAD10.5下載OrCAD10.5中文版軟件
  8. 0.00 MB  |  234315次下載  |  免費
  9. 5Altium DXP2002下載入口
  10. 未知  |  233046次下載  |  免費
  11. 6電路仿真軟件multisim 10.0免費下載
  12. 340992  |  191187次下載  |  免費
  13. 7十天學(xué)會AVR單片機與C語言視頻教程 下載
  14. 158M  |  183279次下載  |  免費
  15. 8proe5.0野火版下載(中文版免費下載)
  16. 未知  |  138040次下載  |  免費
RM新时代网站-首页