解譯器模式今天和大家分享的模式是解譯器模式。首先介紹一下解譯器模式適合解決哪類問題。其實,解譯器模式需要解決的問題是,如果一種特定類型的問題發生的頻率足夠高,那麼可能就值得將該問題的各個執行個體表述為一個簡單語言的句子。這樣就可以構建一個解譯器,該解譯器通過解釋這些句子來解決該問題。就應用的例子來說,例如Regex就是它的一種具體應用,解譯器可以為正則表示定義一個文法,如何表示一個特定的Regex,以及如何解釋這個Regex。解譯器模式的類結構圖如下。圖中的結構也比較好理解,解譯器方法抽象出一個
本文執行個體為大家區分NSBundle和NSURL,具體實現內容如下在項目的工程中添加一個檔案,本常式添加的是aa.txt,檔案的內容為百度: www.baidu.com,現在要使用NSBundle和NSURL分別去擷取內容,代碼如下:// 讀取檔案內容// 方法1:按照檔案路徑讀取 NSString *pathBundle = [[NSBundle mainBundle]pathForResource:@"aa" ofType:@"txt"]; NSString
本文執行個體為大家分享了IOS使用UIImageView控制項製作動畫的方法,供大家參考,具體內容如下先添加40張tomcat的圖片到資源清單中:名稱為cat_eat0000.jpg到cat_eat0039.jpg。1、定義所需控制項// 定義按鈕,圖片控制項、可變數組對象 UIButton *actionbuttom; UIImageView *imageMove; NSMutableArray *imgsarray;2、初始化各控制項// image動畫//
簡單原廠模式正如此模式的名稱一樣,簡單原廠模式基本上是所有設計模式裡最簡單的一種,類與類之間的關係一目瞭然。這次我就用很多地方經常舉的例子--計算機,來說明這個模式。首先給大家展示一下類之間的結構圖:通過這張結構圖,可以清晰的看到,加法類、減法類、乘法類、除法類繼承自運算類,簡單工廠類依賴於運算類的執行個體化來實現相應的運算功能,好的,看起來並不複雜,讓我們直接展示一下代碼吧(鑒於目前點點不支援Objective
命令模式封裝一個請求或行為作為一個對象。封裝的請求比原的更加靈活,可以在對象之間傳遞,儲存,動態修改,或放入一個隊列。那麼讓我們簡要的說一下命令模式的特點。 它能比較容易地設計一個命令隊列; 在需要的情況下,可以較容易地將命令記入日誌; 允許接收請求地一方決定是否要否決請求; 可以容易地實現對請求地撤銷和重做; 由於加進新地具體命令類不影響其他的類,因此增加新的具體命令類很容易;
相信做App開發的同學,對於一些第三方的統計分析、錯誤收集等SDK應該都不陌生。就目前而言市面上也有許多相同功能的產品,眼花繚亂,讓人無法抉擇選哪一款SDK才是最靠譜的。那就隨便先選一款試試用吧!那麼問題來了:如果項目都快做完了結果發現這款SDK實在坑爹,不僅擴充性差,還經常讓App
圖片處理中經常用的圖片剪裁,就是通過剪裁框確定圖片剪裁的地區,然後剪去該地區的圖片,今天實現了一下,其實圖片剪裁本身不難,主要剪裁框封裝發了點時間,主要功能可以拖動四個角縮放,但不能超出父視圖,拖動四個邊單方向縮放,不能超出父視圖,拖動中間部分單單移動,不改變大小,不能超出父視圖。下面列舉一些主要代碼。四個角的處理代碼:-(void)btnPanGesture:(UIPanGestureRecognizer*)panGesture{ UIView *vw = panGesture.view;
項目中很多時候會碰到這個需求,實現多張圖片的無限迴圈輪轉,以前做過,項目中幾個地方的都用到了,當時沒有封裝,幾個地方都拷貝幾乎一樣的代碼,代碼複用性不好,今天沒事封裝了一下,使用起來比較簡單。
介紹:UIScrollView用於在一個小範圍裡顯示很大的內容的控制項。通過使用者平滑、手捏手勢,在這個小地區裡查看不同內容。是UITableView和UITextView的父類。它是視圖,但是比較特殊,可以看成把它看成2層的結構。上面是它的frame層,跟一般試圖一樣,是它的可見地區,下面層是contentView,可以滑動。父類UIView方法複製代碼 代碼如下:// autoresizingMask - 現在基本棄用,改用autoLayouttypedef
寫在前面在iOS開發中,無論是在UITableView還是在UICollectionView中,通過網路擷取圖片設定到cell上是較為常見的需求。儘管有很多現存的第三方庫可以將下載和緩衝功能都封裝好了供開發人員使用,但從學習的角度出發,看懂源碼,理解其中的原理,結合自身的實際需求寫出自己的代碼是很必要的。在剛結束的Demo中,有用到非同步圖片下載功能,這篇筆記就是對整個實現的簡單整理。基本思路•cell中添加一個UIImageView•cell擁有url,發起下載請求,註
iOS中的事件分為三類:觸摸事件、加速計事件、遠端控制事件。只有繼承了UIResponder的對象才能接收並處理事件,稱之為“響應者對象”。UIApplication、UIViewController、UIView都繼承自UIResponder。UIResponder內部提供的方法來處理事件:觸摸事件:touchesBegan、touchesMoved、touchesEnded、touchesCancelled加速計事件:motionBegan、motionEnded、motionCancell
首先我們忽略掉3D效果,先要做的是一個右拉的抽屜效果.總體思路: 1.建立一個ContainerViewController容器控制器,然後把左側選擇菜單的SideMenuViewController,和右側負責顯示內容的MainViewController 添加到ContainerViewController中.
一、鍵盤風格 UIKit架構支援8種風格鍵盤。複製代碼 代碼如下:typedef enum { UIKeyboardTypeDefault, // 預設鍵盤:支援所有字元
分頁控制項是一種用來取代導覽列的可見指標,方便手勢直接翻頁,最典型的應用便是iPhone的主畫面,當表徵圖過多會自動增加頁面,在螢幕底部你會看到原點,用來只是當前頁面,並且會隨著翻頁自動更新。一、建立複製代碼 代碼如下:UIPageControl* myPageControl = [[UIPageControl alloc]initWithFrame:CGRectMake(0.0, 400.0, 320.0, 0.0)]; 二、設定屬性頁面數目複製代碼
PC上的滑塊是很醜陋的,因為我們只能通過滑鼠去拖動他。不過當Jobs把它移植到IOS上時一切變得酷起來,因為我們可以通過手指去拖動它,這種感覺是很妙的。滑塊為使用者提供了一種可見的做範圍調整的方法,使用者可以通過拖動一個滑動條改變它的值,並且可以對其配置以合適不同範圍。你可以設定滑塊值的範圍,也可以在兩端加上圖片,以及進行各種調整讓它更美觀。滑塊非常適合用於表示在很大範圍(但不精確)的數值中進行選擇,比如音量設定、靈敏度控制等諸如此類的用途。一、建立滑塊是一個標準的UIControl。我們可以通
首先,預先處理命令他不是一個常量!!!!我們來看一段代碼#define avatar @"60" if (false) { #define avatar @"80" }
先來看看效果:下面進入正題,是時候展現真正的技術了:首先在控制器裡添加一個scrollView,再在scrollView上的對應位置上添加要展示的imageView(立方體視圖組),當然也可以放上其它子控制器的view實現更多功能這個隨意不是重點//*******添加scrollView******* [self createScrollView];//******建立立方體視圖組****** [self createCubicViewArray];//添加視圖到scrollView上
CAAnimation動畫體系的介紹CAAnimation是CoreAnimation架構中執行動畫對象的基類,下面有一張圖,是我手畫的,不太美觀,但是可以將與CAAnimation相關的幾個動畫類的關係表達清楚:從上圖中可以看到,從CAAnimation中繼承出三個子類,分別是用於建立屬性動畫的CAPropertyAnimation,建立轉場動畫的CATransition和建立組合動畫的CAAnimationGroup。我們就先從根類開始探討。1.CAAnimation屬性和方法CAAnima
CoreMotion架構的使用CoreMotion架構十分強大,它不僅將加速度感應器和螺旋儀感應器進行了統一配置和管理,還為我們封裝了許多演算法,我們可以直接擷取到裝置的運動狀態資訊。1、CoreMotion負責處理的資料CoreMotion負責處理四種資料,一種是加速度資料,一種是螺旋儀資料,一種是磁感應資料,還有一種是前三種資料通過複雜運算得到的裝置的動作資料。幾個主要的類如下:CMAccelerommterData:裝置的加速度資料typedef struct { &
一、引言在iOS7之前,系統一直沒有提供一個完整的架構來描述任務進度相關的功能。這使得在開發中進行耗時任務進度的監聽將什麼麻煩,在iOS7之後,系統提供了NSProgress類來專門報告工作進度。二、建立單任務進度監聽器單任務進度的監聽是NSProgress最簡單的一種運用情境,我們來用定時器類比一個耗時任務,範例程式碼如下:@interface ViewController (){ NSProgress * progress;}@end@implementation