2016-02-14 38 views
0

我注意到設置爲全寬的UiImageView在viewDidAppear之前未被賦予其正確的寬度。Swift ios viewDidLoad,viewDidAppear圖像控件大小不同

這對我來說有點problmatic因爲:

  • 我的自定義徽標圖形加載,可以擁有任何高/寬
  • 這意味着,要保持規模(和全寬),我設置了高度約束在.png文件相匹配的寬/高比例

然而,在viewDidAppear我不能得到真正的圖像的寬度 - 也viewWillAppear中

我在這裏錯過了一個stage/tehcnique(新的xcode/ios/swift),或者我可能會做出我自己的計算,並且不依賴於檢索uiimageview的寬度嗎?

回答

2

請記住,viewDidLoad僅在您的視圖被加載並且尚未放入超級視圖時才被調用,因此您仍然不知道它是如何處理最終幀的,它只是您在其xib文件中定義的幀(如果有的話)

但你在上海華添加它(在許多方式)等(以下其autoresizingMask)的幀大小的變化,你只能在 viewDidAppear方法

+0

這通常得不到他們你但是需要,因爲'viewDidAppear'方法只在過渡動畫完成後調用。 –

+0

正確,但在這種情況下,你必須自己管理視圖框架,然後將其添加到超級視圖中(即在viewWillApper中,您可以添加像self.view.frame = self.view.superview.bounds;/objective- c代碼) – meronix

+0

所以假設我想製作一個使用viewWillAppear的解決方案。我currenlytt讓他從uiimagelogo.frame「框架」...但由於這是不正確的大小,我不能使用它。你建議我使用self.view.superview.bounds?我現在試試 – Tom