以前我們使用過uiimage來載入,而uiimageview是在介面上顯示的乙個控制項,在uiimageview中顯示的話應該首先把載入到uiimage中,然後通過其他方式使用該uiimage。以下說明了四種常用的載入uiimage的方法:
imagenamed:使用應用程式束中的乙個檔案來建立,ios4以後的版本中可以省略副檔名;
imagewithcgimage:使用quartz 2d物件建立uiimage,與initwithcgimage等效;
imagewithcontentsoffile:根據指定的路徑建立uiimage,與initwithcontentoffile等效;
imagewithdata:使用nsdata建立,與initwithdata等效;
另外,為支援iphone4之後的retina顯示屏,系統根據檔名字尾來載入最匹配的影象,例如有兩個包含相同圖示的檔案,乙個是標準的,乙個是用於retina螢幕顯示的,標準命名為icon.png,而hd版本命名為[email protected],載入期間,uiimage會自動去匹配需要載入的影象,如果沒有hd版本的影象,uiimage會載入標準的影象檔案並將其放大到合適高解析度的顯示屏。
建立uiimageview有兩種方法,一種是通過之前提到的用uiimage來載入:
uiimage *image = [uiimage
imagenamed:@"picture"];
uiimageview *imageview = [[uiimageview
alloc] initwithimage:image];
另一種是通過initwithframe:來載入,然後手工修改uiimageview的屬性。
animationduration:屬性,指定動畫持續的時間;
animationimages:屬性,是乙個nsarray,包含要載入到uiimageview中的影象;
image:屬性,指定乙個要載入的影象;
下面來構建乙個幻燈片的應用:
首先看看完成後整體工程目錄截圖:
下面來看看使用core graphics來繪製簡單影象,通過uiimage不能訪問整個core graphics庫,但也提供了5個方法來像core graphics那樣工作:
drawaspatterninrect:在矩形內繪製影象,影象不縮放,必要時將平鋪
drawatpoint:在左上角位於cgpoint指定位置開始繪製影象
drawinrect:在cgrect內繪製影象,並相應的縮放
drawinrect:blendmode:alpha:drawinrect的複雜版本
有乙個問題是,不能在viewdidload:或其他通常來載入物件的方法中使用這些方法,因為他們依賴於圖形上下文,圖形上下文是繪畫的目的地,好比視窗等。在iphone和ipad中,uiview自動在calayer中建立乙個圖形上下文,calayer是與每個uiview相關聯的core animation層,要訪問的話可以建立uiview的子類並重寫drawrect:方法。
建立customuiimageview並繼承uiview,然後重寫drawrect方法,**如下:
#import "customuiimageview.h"
@implementation customuiimageview
- (id)initwithframe:(cgrect)frame
returnself;
}// only override drawrect: if you perform custom drawing.
// an empty implementation adversely affects performance during animation.
- (void)drawrect:(cgrect)rect
@end
使用的話在viewcontroller.m檔案中新增如下**即可:
customuiimageview *customimageview = [[customuiimageview alloc] initwithframe:[[uiscreen mainscreen] bounds]];
[self.view addsubview:customimageview];
編譯執行結果如下:
使用該方法可以構建更複雜的功能,如混合,類似ps中的功能,如顏色加深和強光以及讓部分透明,這些方法都可以實現。相比於之前建立多個uiimageview物件,使用單個drawrect:方法更方便和容易。
IOS學習筆記18 UIImageView
mageview中顯示的話應該首先把載入到uiimage中,然後通過其他方式使用該uiimage。以下說明了四種常用的載入uiimage的方法 imagenamed 使用應用程式束中的乙個檔案來建立,ios4以後的版本中可以省略副檔名 imagewithcgimage 使用quartz 2d物件建立...
python學習筆記18
棧 stack 可以用順序表實現,也可以用鍊錶實現,其原理為後進先出,操作包括 stack 建立乙個新的空棧 push item 新增乙個新的元素item到棧頂 pop 彈出棧頂元素 peek 返回棧頂元素 is empty 判斷棧是否為空 size 返回棧的元素個數。佇列 queue 也是可以用順...
c 學習筆記(18)
類模板做友元 全域性函式類內實現 直接在類內宣告友元 全域性函式類外實現 需要提前讓編譯器知道全域性函式的存在 template classt1,class t2 class person 全域性函式的類內實現 friend void printperson personp 加入空模板的引數列表,表...