? ? ? 最近做項目時,需要在頁面中顯示一系列圖片,這些圖片通過用戶點擊按鈕進(jìn)行切換,并且可以實現(xiàn)縮放操作。因為這一系列圖片大小不一,長寬比各異,因此要居中顯示需要結(jié)合代碼進(jìn)行動態(tài)調(diào)整。除了單純的顯示圖片外,頁面還顯示對應(yīng)的一組注記和文字,注記和文字的位置與圖片是配套的,坐標(biāo)數(shù)據(jù)存儲在sqlite數(shù)據(jù)庫中,并且以圖片的左上角為注記零點。這一系列圖片因為內(nèi)容帶有不規(guī)則的陰影效果(陰影在右下方),因此不是以圖片左上腳點縮放圖片,或者是通過最終大小反推出縮放系數(shù),都會導(dǎo)致注記位置計算不準(zhǔn)確。
? ? 首先,使用AutoLayout對UIScrollview和UIImageView布局。UIScrollview和父View相套和,UIImageView定位在UIScrollView中心點,并設(shè)置四個方向的距離。

? ? 在使用UIImageView加載圖片時,將它的contentMode屬性選擇TopLeft。
將UIImageView四個方向的約束與代碼連接,結(jié)合代碼設(shè)置約束的Constraint值,實現(xiàn)UIImageView(圖片)的居中。

注意:iOS7以后,默認(rèn)會給UIScrollView上下留白,需要設(shè)置屬性去掉白邊
? ? ? ? ? self.automaticallyAdjustsScrollViewInsets = false
? ? ? ? ?UIImageView每次更換image前,都組要設(shè)置contentMode屬性


本例中,出使情況下沒有縮放UIImageView中圖片和UIScrollView。