UIImageView代表一個圖片顯示控件,,它直接繼承了UIView基類,沒有繼承UIControl,,因此,,UIImage只能作為圖片的顯示控件,不能接受用戶輸入,,也不能與用戶交互,,它只是一個靜態(tài)控件。 當(dāng)程序需要使用UIImageView來顯示圖片時,,即可直接在Interface Builder中把UIImageView拖入程序界面中,,也可在程序中創(chuàng)建UIImageView對象。 創(chuàng)建UIImageView對象之后,,接下來可以通過如下兩個屬性訪問或設(shè)置該控件顯示的圖片,。 image:訪問或設(shè)置該控件顯示的圖片。 highlightedImage:訪問或設(shè)置該控件處于高亮狀態(tài)時顯示的圖片。 除此之外,UIImageView還可以使用動畫顯示一組圖片,,使用UIImageView動畫顯示一組圖片的屬性和方法如下,。 animationImages:訪問或者設(shè)置該UIImageView需要動畫顯示的多張圖片。該屬性的值是一個NSArray對象,。 highlightedAnimationImages:訪問或者設(shè)置該UIImageView高亮狀態(tài)下需要動畫顯示的多張圖片。該屬性的值是一個NSArray對象,。 animationDuration:訪問或設(shè)置該UIImageView的動畫持續(xù)時間,。 animationRepeatCount:訪問或設(shè)置該UIImageView的動畫重復(fù)次數(shù)。 startAnimating:開始播放動畫,。 stopAnimating:停止播放動畫,。 isAnimating:該方法判斷該UIImageView是否正在播放動畫。 如果在Interface Builder的用戶界面設(shè)計文件中選中一個UIImageView,,可以看到Xcode顯示如圖10.24所示的屬性檢查器面板,。 在圖10.24所示的屬性檢查面板中,UIImageView所支持的三個屬性的意義非常明確,,此處不再贅述,。實際上,UIView控件所支持的Mode屬性可控制UIImageView所顯示圖片的縮放模式,,Mode屬性是一個列表框,,該列表框支持如下列表項。 Scale To Fill:不保持縱橫比縮放圖片,,使圖片完全適應(yīng)該UIImageView控件,。 Aspect Fit:保持縱橫比縮放圖片,使圖片的長邊能完全顯示出來,。也就是說,,可以完整地將圖片顯示出來。 Aspect Fill:保持縱橫比縮放圖片,,只保證圖片的短邊能完全顯示出來,。也就是說,圖片通常只在水平或垂直方向是完整的,,另一個方向?qū)l(fā)生截取,。 Center:不縮放圖片,只顯示圖片的中間區(qū)域,。 Top:不縮放圖片,,只顯示圖片的頂部區(qū)域。 Bottom:不縮放圖片,,只顯示圖片的底部區(qū)域,。 Left:不縮放圖片,,只顯示圖片的左邊區(qū)域。 Right:不縮放圖片,,只顯示圖片的右邊區(qū)域,。 Top Left:不縮放圖片,只顯示圖片的左上邊區(qū)域,。 Top Right:不縮放圖片,,只顯示圖片的右上邊區(qū)域。 Bottom Left:不縮放圖片,,只顯示圖片的左下邊區(qū)域,。 Bottom Right:不縮放圖片,只顯示圖片的右下邊區(qū)域,。 利用本實例的圖片瀏覽器可以依次查看應(yīng)用中的每張圖片,,除此之外,還可以改變正在查看的圖片的透明度,,這可借助UIView的alpha屬性來實現(xiàn)。不僅如此,,本圖片瀏覽器還可通過一個小區(qū)域來查看圖片的原始大小,,因此,本例會定義兩個UIImageView:一個用于查看圖片整體,,一個用于查看圖片局部的細(xì)節(jié),。 創(chuàng)建一個Single View Application,并向界面中添加三個按鈕,、兩個UIImageView,,然后將它們擺放整齊,在Interface Builder中設(shè)計出的程序界面如圖10.25所示,。 為了能在程序中訪問兩個UIImageView控件,,還需要在Interface Builder中將這兩個UIImageView綁定到控制器類的IBOutlet屬性:iv1和iv2,這樣控制器類即可通過這兩個屬性來訪問這兩個UIImageView控件,。 為了讓程序能響應(yīng)應(yīng)用界面上的三個按鈕的單擊事件,,還需要在Interface Builder中為這三個按鈕的Touch Up Inside事件綁定IBAction事件處理方法,這些按鈕分別綁定到IBAction事件處理方法為:plus:,、minus:和next:,。 完成界面設(shè)計之后,接下來編寫該應(yīng)用界面對應(yīng)的控制器類的實現(xiàn)部分,,主要就是為plus:,、minus:和next:方法提供實現(xiàn)。 除此之外,,程序還需要為UIImageView的單擊事件提供響應(yīng)——問題是UIImageView并未繼承UIControl基類,,因此,,既不能在Interface Builder中為UIImageView的Touch Up Inside事件綁定IBAction事件處理方法,也不能通過代碼為該控件的Touch Up Inside事件綁定事件處理方法,。為了讓UIImageView能響應(yīng)單擊事件,,程序可以通過UIImageView添加手勢檢測器來處理單擊事件。 下面是控制器類的實現(xiàn)部分代碼,。 程序清單:codes/10/10.7/UIImageViewTest/UIImageViewTest/FKViewController.m
上面程序中,,在viewDidLoad方法中初始化了該程序需要顯示的所有圖片——將這些圖片的文件名組成一個NSArray數(shù)組。除此之外,,該程序還創(chuàng)建一個手勢檢測器,,并為iv(第一個UIImageView控件)添加該手勢檢測器,該手勢檢測器就會負(fù)責(zé)處理該UIImageView控件上的點擊事件,。 接下來在plus:,、minus:中的粗體字代碼通過修改alpha屬性來控制該控件的透明度,而next:方法中粗體字代碼則通過image屬性來控制該UIImageView所顯示的圖片,。 該程序中的一個難點是使用CGImage來處理位圖,,雖然iOS提供了UIImage來代表位圖,但實際上UIImage對位圖的處理功能非常有限,,如果需要對位圖進行處理,,則需要借助CGImage。第11章介紹圖形,、圖像處理時會進一步介紹CGImage的功能和用法,。 編譯、運行該程序,,可以看到如圖10.26所示的效果,。 UIImageView除了可以顯示單張圖片之外,還能以動畫方式輪換顯示多張圖片,,這種顯示方式非常類似于幻燈片播放方式,。 為了讓UIImageView以動畫方式顯示多張圖片,只要為該UIImageView的animationImages屬性賦一個NSArray集合(該集合元素中都是UIImage對象),,接下來設(shè)置與動畫相關(guān)的一些屬性,,再調(diào)用UIImageView的startAnimating方法開始播放動畫即可。 下面的實例將會使用UIImageView開發(fā)一個幻燈片播放器,。 創(chuàng)建一個Single View Application,,使用Interface Builder打開應(yīng)用界面,并將一個UIImageView拖入該應(yīng)用界面中,。為了能在該應(yīng)用界面對應(yīng)的控制器類中訪問該UIImageView控件,,可以在Interface Builder中將該UIImageView綁定到該控制器類的IBOutlet屬性:iv,。 接下來修改該應(yīng)用界面對應(yīng)的控制器類的實現(xiàn)部分,修改后的實現(xiàn)部分代碼如下,。 程序清單:codes/10/10.7/UIImageViewTest2/UIImageViewTest2/FKViewController.m
|
|
來自: 雪柳花明 > 《ios_UI界面》