2016-11-09 73 views
1

我有一個UIScrollView有約束釘到它的超視圖的前沿和後沿(不是邊距)。在這個滾動視圖中,我有一個UIImage,我將它設置爲滾動視圖的全部寬度。在iPhone 7上,此功能正常工作,圖像爲全寬iOS滾動視圖邊界不等於superview界限

但是,在iPhone 7 Plus中,圖像邊緣與屏幕邊緣之間存在間隙。滾動視圖是全寬度,因爲當我放大圖像時,它會直接移動到邊緣。

我通過設置

imageView.frame = scrollView.bounds imageView.contentMode = .scaleAspectFill

獲取圖像相匹配的滾動視圖寬度的問題似乎是滾動視圖邊界。在iPhone 7 Plus上,滾動視圖寬度報告爲375,但屏幕寬度報告爲414.在iPhone 7上,滾動視圖寬度爲375,屏幕寬度也爲375.

任何人都知道爲什麼這是?我確定我誤解了一些東西!

+0

你在哪裏使用這些代碼來設置'imageView'的框架? – alexburtnik

+0

這兩行都在我的視圖控制器的viewDidLoad函數中 –

回答

1

很可能你的問題是當你用它來設置imageView的幀時,scrollView的幀沒有被更新。

嘗試移動佈局代碼爲viewDidLayoutSubviews代替:

override func viewDidLayoutSubviews() { 
    super.viewDidLayoutSubviews() 
    imageView.frame = scrollView.bounds 
} 
+0

謝謝,看起來我需要了解控制器的生命週期 –

+2

@TomReay viewDidLoad在創建視圖時調用,但它甚至沒有添加到層次結構中你不能依賴那裏的任何框架。事實上,在iOS 10中,所有的框架甚至不等於故事板中的框架,它們默認爲1000 * 1000,以迫使開發人員處理類似於您的問題。 – alexburtnik