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