2015-02-11 38 views
8

我的故事板上有UIImageView,它通過自動佈局約束自動定位和縮放。如何在應用自動佈局後獲取UIImageView大小?

應用程序運行時,此UIImageView根據設備屏幕大小和自動佈局約束進行正確調整大小和位置。

如何獲取UIImageView框它顯示在屏幕上? 常見的UIImageView.bounds和UIImageView.frame值返回原始在故事板中使用的值,並不反映新的UIImageView大小。

+0

你在哪裏把那得到'frame'的代碼? – sikhapol 2015-02-11 19:30:35

+0

In - (void)viewWillAppear:(BOOL)主ViewController的動畫。 – Kibernetik 2015-02-11 20:17:05

+0

很好的問題,tbaranes的回答確實幫了我很大的忙。你應該更新問題以包含「框架」這個詞以及「大小」,因此試圖找出在應用約束後如何得到正確原點的人也可以找到這個問題。 – TMin 2016-03-23 00:34:53

回答

15

爲了在調整大小後獲得UIImageView的正確幀/邊界,您需要先使用[yourImageView layoutIfNeeded]要求自動佈局更新該佈局。這將解決您的限制並更新您的yourImage.bounds

[myImageView layoutIfNeeded]; 
NSLog(@"w: %f, h: %f", myImageView.bounds.size.width, myImageView.bounds.size.height); 
+0

非常感謝!你的評論解決了我的問題。 – Kibernetik 2015-02-11 20:17:52

+0

不幸的是,它不適用於不同大小的類。 – khunshan 2016-05-12 13:07:26

+0

如果我想動畫顯示佈局更改並同時知道動畫後的結束幀,該怎麼辦? – DanSkeel 2016-06-23 18:00:53

7

檢查這些方法:

- (void)viewWillAppear:(BOOL)animated { 
// view is about to be added to hieararchy 
} 

- (void)viewDidAppear:(BOOL)animated { 
// view was added 
} 

- (void)viewDidLayoutSubviews { 
// VC just laid off its views 
} 
+1

是的, - (void)viewDidLayoutSubviews是獲取更新維度並解決問題的適當位置。非常感謝你! – Kibernetik 2015-02-11 20:20:55

+2

@Kibernetik,別忘了打電話給**超級**! – orkenstein 2015-02-11 20:21:53

+1

謝謝你的提示! – Kibernetik 2015-02-11 20:42:19

相關問題