ProducthuntOSX
創(chuàng)新互聯(lián)專注于當(dāng)雄網(wǎng)站建設(shè)服務(wù)及定制,我們擁有豐富的企業(yè)做網(wǎng)站經(jīng)驗(yàn)。 熱誠(chéng)為您提供當(dāng)雄營(yíng)銷型網(wǎng)站建設(shè),當(dāng)雄網(wǎng)站制作、當(dāng)雄網(wǎng)頁(yè)設(shè)計(jì)、當(dāng)雄網(wǎng)站官網(wǎng)定制、小程序開(kāi)發(fā)服務(wù),打造當(dāng)雄網(wǎng)絡(luò)公司原創(chuàng)品牌,更為您提供當(dāng)雄網(wǎng)站排名全網(wǎng)營(yíng)銷落地服務(wù)。
Mac 上開(kāi)源的 Product Hunt OSX 客戶端軟件
GanHuoCode
干貨集中營(yíng)的第三方iOS客戶端
ESTMusicPlayer
一款基于 DOUAudioStreamer 開(kāi)發(fā)的一款優(yōu)雅簡(jiǎn)潔的音樂(lè)播放器.
beautifulApp
用Swift做的一個(gè)高仿最美應(yīng)用
Geofancy
The Geofancy iOS app. Helping you to get the best out of your automated home, geofencing, iBeacons at your hand.
CocoaChinaPlus
CocoaChina+是一款開(kāi)源的第三方CocoaChina移動(dòng)端。整個(gè)App都用Swift2.0編寫(xiě)(除部分第三方OC代碼外,比如JPush和友盟)。
Dunk
Dribbble客戶端
ganchai
干柴(客戶端、服務(wù)端)
phphub-ios
PHPHub iOS客戶端
高仿糯米
高仿糯米
知乎日?qǐng)?bào)
用swift2.0實(shí)現(xiàn)的知乎日?qǐng)?bào)iOS客戶端
HackerNewsReader
Hacker News iOS客戶端
以下是我整理的iOS開(kāi)源App的一部分,其中不乏有許多不錯(cuò)的項(xiàng)目,后續(xù)更多都會(huì)整理在:iOS開(kāi)源項(xiàng)目 - MobDevGroup上
iBBS-Swift
一款用Swift寫(xiě)的BBS客戶端
SmallDay
用Swift 實(shí)現(xiàn)的高仿小日子
Swift-Radio-Pro
Professional Radio Station App, created w/ Swift 2.0
zulip-ios
Dropbox收購(gòu)公司內(nèi)部社交服務(wù)商Zulip,然后全部開(kāi)源,這是iOS App
DesignerNewsApp
Build a Swift App as a designer
firefox-ios
Firefox for iOS
iphone-app
開(kāi)源中國(guó)的iPhone客戶端源碼
Git@OSC
Git@OSC iPhone 客戶端,方便用戶查看Git@OSC的項(xiàng)目以及簡(jiǎn)單的操作issue等
Coding
Coding官方客戶端 GitHub地址
Coding iPad版
Coding官方客戶端
iOSSF
SegmentFault官方App
ioctocat
GitHub第三方客戶端
iTunesPicker
類似AppStore的一個(gè)應(yīng)用
Doppio
尋找最近的星巴克
swiftmi-app
swift迷 - 專業(yè)的Apple swift開(kāi)發(fā)中文社區(qū) app版本 采用Swift實(shí)現(xiàn)
Cheddar
一個(gè)日程管理的App
BeeFancy
仿Fancy官方APP的WIREFRAME,基于BeeFramework
Anypic
類似于Instagram的一款A(yù)pp
SXNews
模仿網(wǎng)易新聞做的精仿網(wǎng)易新聞
iReddit
Reddit iPhone客戶端
readdit
Reddit iPad客戶端
豆瓣相冊(cè)
Slowslab iOS應(yīng)用 豆瓣相冊(cè) 精選集 開(kāi)源項(xiàng)目
ChatSecure-iOS
Objective-C寫(xiě)的XMPP聊天應(yīng)用
NotificationChat
Objective-C寫(xiě)的完整的聊天應(yīng)用
Swift-ZhihuDaily
用Swift實(shí)現(xiàn)的仿知乎日?qǐng)?bào)應(yīng)用
FakeZhihuDaily
仿知乎日?qǐng)?bào)iOS客戶端
edhita
用Swift實(shí)現(xiàn)的iOS平臺(tái)開(kāi)源文本編輯器。
ruby-china-for-ios
RubyChina官方客戶端
Meizi
豆瓣妹子圖iOS客戶端
HackerNews
用Swift寫(xiě)的Hacker News 閱讀 iOS App
SwiftHN
另外一個(gè)用Swift寫(xiě)的Hacker News 閱讀App
News-YC
Hacker News閱讀類iOS App
twidere
twitter 第三方客戶端
2048
用SpriteKit實(shí)現(xiàn)的2048游戲
PlainReader
一款 iOS(iPhone + iPad) 新聞?lì)惪蛻舳?,?nèi)容抓取自
swift-2048
用Swift實(shí)現(xiàn)的2048游戲
iOS-2048
用Objective-C實(shí)現(xiàn)的2048游戲
FlappySwift
用swift實(shí)現(xiàn)的flappy bird游戲
ECMobile_iOS
基于ECShop的手機(jī)商城客戶端
kxmovie
用ffmpeg寫(xiě)的iOS視頻播放器
wikipedia-ios
維基百科官方App, 已上架
Sol
漂亮的扁平風(fēng)格的天氣App
Project-RainMan
用Swift寫(xiě)的天氣類App
SwiftWeather
用Swift寫(xiě)的天氣類App
v2ex
v2ex第三方iOS客戶端
V2EXClient
Swift實(shí)現(xiàn)的V2EX iOS客戶端
VPNOn
VPN連接管理,支持Apple Watch,已上架
Monkey
GitHub第三方iOS客戶端
JokeClient-Swift
基于swift,用糗事百科的API簡(jiǎn)單做了一個(gè)糗百客戶端,可以瀏覽各種段子,瀏覽搞笑圖片,查看精彩評(píng)論等.
Watch
Dribbble第三方客戶端
MyOne-iOS
用OC寫(xiě)的《一個(gè)》 iOS 客戶端
BaiduFM-Swift
百度FM swift語(yǔ)言實(shí)現(xiàn)
WNXHuntForCity
高仿城覓2.0 by-objective-c
Tomate
圓盤(pán)式計(jì)時(shí)器
eigen
The Art World in Your Pocket or Your Trendy Tech Company's Tote, Artsy's iOS app.
WWDC
WWDC app for OS X
MJRefresh 是著名開(kāi)發(fā)者及培訓(xùn)講師李明杰老師的作品,到現(xiàn)在在github已經(jīng)有10000多顆star,真真是極好用的iOS下拉刷新(也支持上拉加載更)控件。本文主要素材來(lái)源有 正在學(xué)hybrid開(kāi)發(fā)的iOS開(kāi)發(fā)者 J_Knight 的文章和 github 上李明杰老師的用法介紹(主要是本文下部分)。
該框架的結(jié)構(gòu)設(shè)計(jì)得很清晰,使用一個(gè)基類MJRefreshComponent來(lái)做一些基本的設(shè)定,然后通過(guò)繼承的方式,讓MJRefreshHeader和MJRefreshFooter分別具備下拉刷新和上拉加載的功能。從繼承機(jī)構(gòu)來(lái)看可以分為三層,具體可以從下面的圖里看出來(lái):
其中一條繼承鏈?zhǔn)沁@樣的
開(kāi)發(fā)者一般使用場(chǎng)景是這樣的:
作者 在類目 UIScrollView+MJRefresh 中運(yùn)用運(yùn)行時(shí)關(guān)聯(lián)屬性函數(shù) objc_setAssociatedObject 和 objc_getAssociatedObject 對(duì) UIScrollView 視圖控件添加了 mj_header 、 mj_footer 等屬性.
MJRefreshNormalHeader 是最下層的子類, headerWithRefreshingTarget 和 headerWithRefreshingBlock 是最上層基類 MJRefreshComponent 暴露出的靜態(tài)快捷構(gòu)造方法。把對(duì)象的創(chuàng)建下放到子類,此處明顯用到了工廠方法。編譯時(shí)類型 mj_header is classof MJRefreshHeader ,運(yùn)行時(shí)類型 MJRefreshNormalHeader 是其子類,此處是典型的多態(tài)特性的應(yīng)用。
即面向接口編碼,而非面向?qū)崿F(xiàn)編碼。作者從最上層基類 MJRefreshComponent 即暴露接口
具體實(shí)現(xiàn):
具體實(shí)現(xiàn),首先來(lái)看一下該控件的基類:MJRefreshComponent:
這個(gè)類作為該控件基類,涵蓋了基類所具備的成份:狀態(tài),回調(diào)block等,大致分成下面這5種職能:
監(jiān)聽(tīng)的聲明:offset、size、state
對(duì)于監(jiān)聽(tīng)的處理:
從上面等結(jié)構(gòu)圖可以看出,緊接著這個(gè)基類,下面分為codeMJRefreshHeader/code和codeMJRefreshFooter/code,這里順著codeMJRefreshHeader/code這個(gè)分支向下展開(kāi):
codeMJRefreshHeader/code繼承于codeMJRefreshComponent/code,它做了這幾件事:
初始化有兩種方法:動(dòng)作-目標(biāo)/block塊函數(shù) 做回調(diào)
通過(guò)重寫(xiě)codeprepare/code方法來(lái)設(shè)置header的高度:
通過(guò)重寫(xiě)placeSubviews方法來(lái)重新調(diào)整y值:
這里提供一張圖來(lái)體現(xiàn)三個(gè)狀態(tài)的不同:
這個(gè)類是codeMJRefreshHeader/code類的子類,它做了兩件事:
給一張圖,讓大家直觀感受一下這兩個(gè)控件:
這個(gè)類通過(guò)覆蓋父類三個(gè)方法來(lái)實(shí)現(xiàn)上述兩個(gè)實(shí)現(xiàn):
在這里,將每一個(gè)狀態(tài)對(duì)應(yīng)的提示文字放入一個(gè)字典里面,codekey/code是狀態(tài)的codeNSNumber/code形式
這里主要是對(duì)codelastUpdatedTimeLabel/code和codestateLabel/code進(jìn)行布局。要注意codelastUpdatedTimeLabel/code隱藏的情況。
在這里,根據(jù)傳入的codestate/code不同,在codestateLabel/code和codelastUpdatedTimeLabel/code里切換相應(yīng)的文字。
codeMJRefreshNormalHeader /code繼承于 codeMJRefreshStateHeader/code,它主要做了兩件事:
給一張圖來(lái)直觀感受一下這兩個(gè)view:
同codeMJRefreshStateHeader/code一樣,也是重寫(xiě)了父類的三個(gè)方法:
到此為止,我們已經(jīng)從codeMJRefreshComponent/code到codeMJRefreshNormalHeader/code的實(shí)現(xiàn)過(guò)程看了一遍??梢钥闯?,作者將codeprepare/code,codeplaceSubviews/code以及 setState: 方法作為基類的方法,讓下面的子類去一層一層實(shí)現(xiàn)。
而每一層的子類,根據(jù)自身的職責(zé),分別按照自己的方式來(lái)實(shí)現(xiàn)這三個(gè)方法:
這樣做的好處是,如果想要增加某種類型的 header ,只要在某一層上做文章即可。例如該框架里的 MJRefreshGifHeader ,它和 MJRefreshNormalHeader 屬于同一級(jí),都是繼承于 MJRefreshStateHeader 。因?yàn)槎叨季哂邢嗤问降?stateLabel 和 lastUpdatedTimeLabel ,唯一不同的就是左側(cè)的部分:
還是提供一張圖來(lái)直觀感受一下:
下面我們來(lái)看實(shí)現(xiàn):
它提供了兩個(gè)接口,是用來(lái)設(shè)置不同狀態(tài)下使用的圖片數(shù)組的:
和MJRefreshNormalHeader一樣,它也重寫(xiě)了基類提供的三個(gè)方法來(lái)實(shí)現(xiàn)顯示gif圖片的職能。
分析一款ios應(yīng)用的源代碼方法如下:
1、首先提取整個(gè)應(yīng)用文件的二進(jìn)制代碼,建立for循環(huán)將機(jī)器所有字符串進(jìn)行排列組合并標(biāo)記后編譯。
2、再建立for將應(yīng)用文件二進(jìn)制代碼同所有的字符串排列組合編譯成的二進(jìn)制文件進(jìn)行對(duì)比。
3、最后通過(guò)標(biāo)記就能找到應(yīng)用的源代碼。
您好,很高興為您答疑,iOS11升級(jí)到iOS12沒(méi)有什么好處,建議您不要去更新一般的蘋(píng)果手機(jī)不要去升iOS系統(tǒng),除非迫不得已。升高系統(tǒng)會(huì)使手機(jī)變的卡頓和用電快
iOS應(yīng)用如何獲取BigApp插件里定義的配置?
在LoadingVC中請(qǐng)求數(shù)據(jù)
各個(gè)參數(shù)的詳細(xì)意義可能需要結(jié)合具體的功能再深入了解下。
這個(gè)首頁(yè)信息的內(nèi)容是需要自定義的,否則界面出來(lái)就是這個(gè)效果。
Tab的文字,圖標(biāo)也是在這邊加載的,可以在BigApp配置頁(yè)面修改。
相應(yīng)的配置修改 (Todo)
工時(shí):
Shell 是一個(gè)用 C 語(yǔ)言編寫(xiě)的程序,它是用戶使用 Linux 的橋梁。Shell 既是一種命令語(yǔ)言,又是一種程序設(shè)計(jì)語(yǔ)言。Shell 腳本(shell script),是一種為 shell 編寫(xiě)的腳本程序。在iOS開(kāi)發(fā)中,我們通常編寫(xiě)一些自動(dòng)化的腳本文件,來(lái)提高我們的生產(chǎn)效率,其本質(zhì)就是通過(guò)Shell腳本對(duì)一些 xcodebuild , xcode-select , xcpretty , xcrun 等指令的封裝。本篇文章,我們就針對(duì) Shell 腳本的語(yǔ)法,做一些羅列,以輔助我們?nèi)ネ瓿梢恍┳詣?dòng)化封裝。
執(zhí)行腳本
.sh 文件為 Shell 腳本文件格式,通過(guò) sh 指令執(zhí)行腳本文件
執(zhí)行結(jié)果:
1.通過(guò) echo 輸出變量時(shí),需要使用 $ 或者 ${} 修飾
2. (重點(diǎn))定義變量時(shí),等號(hào)之間不能有空格,不然會(huì)誤認(rèn)為變量為一個(gè)指令
3.可以直接修改 name 變量的值,即當(dāng)前 name 默認(rèn)為 readwrite 權(quán)限
4.我們給 _var 用 readonly 修飾后,再修改值會(huì)拋出異常
執(zhí)行結(jié)果:
執(zhí)行結(jié)果:
執(zhí)行結(jié)果:
執(zhí)行結(jié)果:
$@ 和 $* 都是輸出所有參數(shù),前者是 "$1" "$2" "$3" "$4" ,后者是 "$1 $2 $3 $4"
執(zhí)行結(jié)果:
注意:條件表達(dá)式要放在方括號(hào)之間,并且要有空格,例如: [$a==$b] 是錯(cuò)誤的,必須寫(xiě)成 [ $a == $b ] 。
關(guān)于文件檢測(cè)運(yùn)算符,這里還是都羅列一下吧,比較重要:
執(zhí)行結(jié)果:
執(zhí)行結(jié)果:
執(zhí)行結(jié)果:
執(zhí)行結(jié)果:
2.有參數(shù)
執(zhí)行結(jié)果:
注意: $10 不能獲取第十個(gè)參數(shù),獲取第十個(gè)參數(shù)需要 ${10} .
使用 man 查詢 指令文檔
比如我們想查看 xcodebuild 指令下都有哪些操作,直接在終端執(zhí)行:
當(dāng)我們不清楚某一個(gè)指令下的操作時(shí),就可以通過(guò) man 查詢,然后輔助我們來(lái)編寫(xiě) Shell 指令。
在iOS下,了解下這些 Shell 語(yǔ)法就足夠了,已經(jīng)可以幫助我們完成大部分的 Shell腳本 的編寫(xiě)或者閱讀別人的 Shell 源碼。不需要記憶,簡(jiǎn)單看下就可以。