在‘Objective-C’分類底下的文章

套件管理工具CocoaPods介紹

這是1/9的cocoaHeads裡,SuperBil分享的套件管理工具。 之前小岡也有和我推薦過這個工具,當時沒有去深入研究如何使用。 這次與會完後,便開始試著學習使用這個管理套件。(裝完後心得:天呀!實在太好用了!必裝~) 分享資料 投影片:做自己的可可豆夾 錄影檔:CocoaPods CocoaPods介紹 CocoaPods是一個管理套件的工具。 過去在開發app時,如果我們想要用一些第三方的Library,通常會要到GitHub下載專案到本地端,然後把它載入專案裡。這樣如果套件有更新時,都要手動更新,若是不同版本的ios要用到不同的library,又要手動去管理,會比較麻煩。 並且如果是直接把原始碼放到專案裡,會很容易和自己寫的code混在一起,管理和瀏覽都會較為困難。 CocoaPods就是用來管理這些第三方套件,使用CocoaPods之後,專案會變這樣:  安裝方法 這篇文章有非常詳細的方法:CocoaPods 比較要注意的是,我今天在安裝時,因為Podfile檔案所使用的編碼錯誤,會出現如下錯誤 incompatible character encodings: ASCI […]

繼續閱讀...

AutoLayout介紹

投影片分享 Auto layout in i os 7 from Claire Chang 過去的作法… 使⽤用frame和bounds去決定物件的位置和⼤小。 使用autosizing masks 設定當畫⾯面⼤大⼩小變動時,要固定 那些值(struts)。 在view的⼤大⼩小改變時,可以偵測 super view的⼤大⼩小改變去改變物 件的寬和⾼高的值(springs)。 AUTOLAYOUT和AUTORESIZING MASK的區別 Autoresizing Mask是AutoLayout的⼦子集。 AutoLayout更多的功能 指定任意兩個view的相對位置 可指定⾮非相等約束(⼤大於或者⼩小於等) 可以設定約束的優先級 WHAT IS AUTO LAYOUT 一種基於約束的,描述性的佈局系統。 
 Auto Layout Is a Constraint-Based, Descriptive Layout System. 基於約束 – 以所謂相對位置的約束來定義的 描述性 – 使⽤用接近⾃自然語⾔言的⽅方法來進⾏行描 述 佈局系統 &#8 […]

繼續閱讀...

UITableView的小問題

紀錄一下今天開發我的APP時遇到的小問題, 因為要使用UITableView,發現UITableView放在UIView裡時, 若要使用static cells是不能直接使用的。 當我們要用UIView,裡面有放一些自己的東西,再加上一個Static cells的UITableView時, 會發現雖然在storyboard裡能夠正常的顯示表格的樣子,如下圖 但是當執行出來卻無法顯示已設定好的static cells,而會顯示為一片空白,如下圖 查問Google大神後,在這邊有看到文章有相關的建議,也就是要我們不要實作下面這三個方法 – (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView { } – (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section { } – (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAt […]

繼續閱讀...

iOS6以上控制螢幕旋轉

一般的設定方式 //支援Xcode 4.5 – (NSUInteger) supportedInterfaceOrientations{ //僅正面 // return UIInterfaceOrientationMaskPortrait; //支援縱向 (利用 | 設定多參數) // return UIInterfaceOrientationMaskPortrait // | UIInterfaceOrientationMaskPortraitUpsideDown; //支援橫向 //UIInterfaceOrientationMaskLandscape: 支援按鈕在左、按鈕在右 // return UIInterfaceOrientationMaskLandscape; //支援四個方向 return UIInterfaceOrientationMaskAll; } – (BOOL) shouldAutorotate { return YES; } TabBarController設定方式 假使今天要控制所有畫面中,某些可支援旋轉,某些不行, 在有使用Navigation Cont […]

繼續閱讀...

iOS app security - 分析和防範

講者 :Hokila mail:hokila.jan@splashtop.com blog:josihokila.blogspot.com FB:fb.me/hokilaj 這是10/17分享的第一個講者,在分享有關app的安全上攻防的相關議題 因為這是我第一次參加cocoahead聚會,誤信了google map而迷路,遲了半小時入場,因此有部份內容沒有聽完整>”< 幸好後來找到Hokila很好心的預錄了當天的內容,在投影片最後一頁的QR code裡(有列在參考資料裡)。 ps:報名網頁的地址『台北市大安區敦化南路一段205號6樓600室』,打入google map會出現在忠孝復興站@@ 說到這,當天我到會場時,有另一個漂亮女生也遲到,我就和她打招呼,結果她問我:妳也是用google map嗎? 嗚哇~所以不只我一個人這樣阿!(握手 今天Hokila講的內容大致如下: iOS app 資料結構 在一個APP裡面大概會有幾個資料夾 。MyApp.app裡面會存放一些APP會用到的照片、XAB、貼圖(PVR)或素材PNG、JPG等檔案(裡面的值無法修改)。 。D […]

繼續閱讀...

XSpect簡介(一個AOP觀念實作的框架)

講者資料:小岡 投影片:XSpect 專案github位置:在此 這是10/17在cocoaHead聚會裡由講者所分享的一個他自己所寫的framework 因為他是在今日議程的最後一個講者,有些部份講的較為快速、簡短 有很多投影片也跳過去未說,在當下聽時只能大略聽到一個概念。 較引起我注意的地方,是他所提到的AOP的觀念與應用 也因為對他所說的AOP的觀念以及相關應對、程式設計方式感到蠻有趣的 這部份在會議結束後也花蠻多時間在研究該講者的code以及相關概念的研究 這是講者對AOP的解釋: 如果我要敘述 AOP 在幹嘛,或是說他的目的的話。我會說 AOP 是在用另一種方式去封裝變化,達到原本 OOP 做不到的事。這個變化就是 crosscutting concerns。 crosscutting concerns 就是為了一個邏輯,而散布在四處的程式碼。 AOP 就是要把他們全部包裝在一起。 下面的是其他網頁對於AOP的解釋 AOP全名Aspect-Oriented Programming,我們先來看看XXX-Oriented的意義,通常翻譯「XXX導向」,也就是以XXX為中心,例如中 […]

繼續閱讀...

iOS 7 轉換指南

參考資料:   iOS 7 UI Transition Guide、關於iOS7,設計師需要瞭解的十件事 PDF檔下載:  TransitionGuide IOS7的設計要點 依從:UI應要能很幫助使用者了解如何去操作、與內容互動,但不能搶走內容的鋒頭。它著重強調了怎樣使設計更好地支持內容,而不是反過來壓制內容。 清楚:字體在各種大小下都應清晰易讀,並應巧妙的利用圖示及裝飾,去突顯重點。 深度:巧妙運用手勢及視覺階層以利使用者了解、快速操作。 可以看看蘋果是怎樣在iOS7內置的日曆應用當中貫徹這一點的。新的日曆應用在界面上極大的簡化了,去除了一切不必要的設計元素,並使用了乾乾淨淨的白色背景,完全以內容為中心。 根據「依從」原則,apple建議開發者不要使用擬真。介面的設計應該是圍繞著內容而存在,不應奪走內容的光芒。因此,官方建議盡量避免使用3D質感的按鈕、漸變、光暈、陰影等擬物化的設計,因為他們認為這樣的設計會奪去使用者對內容的焦點。但雖然圖示要輕量化,最小點擊區域44px的規則依然不變,因為用戶不能點擊小於44px的界面元素。 關於移除擬物化風格的設計方式,可以參考iOS7內置的Ga […]

繼續閱讀...

IOS6與IOS7的不同處整理

1. View會和狀態列重疊(壓在其之下) 2. 按鈕沒有邊框 3. tab bar變為半透明 4. 狀態列的顏色不會與導覽列分開 5. tintColor的影響顏色範圍改變,導覽列與tab bar的顏色不會受到tint Color的影響 ps:經測試,在ios7對於Segmented Control的tintColor,如果使用Global tint,一開始時的框線顏色不會變,但點過後顏色會改變。此時必須去各別設定該元件的tint color才會完整變更顏色 6. tab bar的圖示有按下狀態及非按下狀態 7. 文字樣式明顯不同(即使是相同的設定) 8. 預設會是全螢幕畫面 9. 狀態列的高度不再會影響到整體畫面高度(整體畫面會在狀態列之下) 10. NSBundle Class改變(Chia-Hsin分享) ios7的pathForResource (NSBundle Class)方法有調整過, 例,Local/iphone/page/01/01.jpg, ios7之前用: folder = Local fileName = iphone/page/01/01.jpg 參數帶入f […]

繼續閱讀...

UIWebView練習作業

作業目標:http://www.youtube.com/watch?v=azplcMbuoQ4&feature=youtu.be 練習檔案:homework0831 先介紹一下UIWebView UIWebView的資料來源主要有三者: 本機上的HTML字串 本機上的資料 + MIME type 遠端的URL 這邊有中文的介紹:http://www.inside.com.tw/2010/03/14/cs193p-lecture-12 作業練習開始 首先我先拉出storyboard 然後我練習使用程式去產生UINavigationController,這是在AppDelegate.m裡 – (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions { UINavigationController * navi = [UINavigationController new]; UIStoryboard * storyboard = […]

繼續閱讀...

UIViewController切換、Notification、Delegate及繪圖練習

練習目標:http://www.youtube.com/watch?v=xiHBN2B1Vt4&list=UUPRP4bs_BNpx6XWI5Wm7O5g 老師範例:DrawSomething 我的作品:homework0810 在這個範例中,我使用了兩個viewController,去控制兩個頁面的畫面。 第一個用來顯示動畫的地方的viewController如下, 在這個頁面上除了球之外,還會有一個控制開關的鈕,當打開時代表不去管路徑如何直接讓球到圓點, 而關閉則會讓球一步步照著所繪的路線移動。 #import “ViewController.h” @interface ViewController () @property (weak, nonatomic) IBOutlet UISwitch *straightSwitch; @property (weak, nonatomic) IBOutlet UIImageView *myBall; @end @implementation ViewController – (void)viewDidLoad { [super v […]

繼續閱讀...