我知道我必須使用-sizeThatFits:方法並在superView中覆蓋它。但是,這個方法該怎麼辦?我應該只計算我的視圖的新大小,或者我應該發送一些消息到它的子視圖?也許-sizeToFit:和-sizeToFit:消息?而且,何時以及如何向我的superView「說」是時候調整其框架?如何調整UIView以適合其子視圖?
1
A
回答
2
關於您的問題的第一部分:您的-sizeThatFits:
實現不應該在子視圖上調用-sizeToFit:
。前者是一種方法,以爲基礎計算您的視圖的大小(根本不改變它),而後者實際上是更改您的視圖的大小。
您可以絕對地將-sizeThatFits:
調用轉發給您的子視圖,如果這有助於視圖的大小計算。
關於您的問題的第二部分:您應該不會告訴您的超級視圖何時調整視圖的大小,通常情況下。它應該是相反的:一個控制器或父視圖應該是首先嚐試調整您的子視圖的大小。
從蘋果公司的文檔:sizeThatFits - Implement this method if you want your view to have a different default size than it normally would during resizing operations. For example, you might use this method to prevent your view from shrinking to the point where subviews cannot be displayed correctly.
什麼文檔說的是,如果你-sizeThatFits:
實現永遠不會返回低於某一尺寸的框架:即規模將基本成爲在大小調整操作您的視圖的最小尺寸。
PS:,因爲你的問題的話題你問如何調整,以便適應它的內容 - 你應該使用sizeToFit用於這一目的。您需要爲自定義視圖自己實現該方法。
相關問題
- 1. 調整UIView以適合其內容
- 2. 調整UIView以適合CGPath
- 3. UITableView不自動調整以適應其UIView超級視圖
- 4. 調整圖像以適合其容器
- 5. UITableViewCell不調整UIView子視圖
- 6. UIView子視圖不調整大小
- 7. 在UIView中自動調整子視圖
- 8. UIView子視圖自動調整大小
- 9. UIView調整子視圖的大小
- 10. UIView不自動調整子視圖
- 11. 設置UIView大小以適合子視圖
- 12. UIKIt:調整視圖以適應子視圖
- 13. 如何調整其父級ViewGroup後調整子視圖高度?
- 14. 如何調整UIView的大小以適應較小的父視圖
- 15. 如何以編程方式自動將父視圖適合其子視圖?
- 16. 如何使用自動佈局調整視圖以適應標籤子視圖?
- 17. 如何更改父視圖的高度以適合子視圖
- 18. 如何使一個子視圖自動調整其超視圖?
- 19. 在NSTextView中調整圖像以適合
- 20. 調整圖像大小以適合div
- 21. 調整圖像以適合比例
- 22. 調整圖像大小以適合Imageview
- 23. 調整圖像大小以適合LinearLayout
- 24. 調整圖像以適合標籤
- 25. 調整ImageView以適合圖片
- 26. 調整圖像以適合邊框
- 27. 調整圖像大小以適合UIImageView
- 28. 如何自動調整窗口大小以適合其內容
- 29. 如何以編程方式設置子視圖的框架以使其適合其超視圖內?
- 30. 使子視圖適合內容器,並正確調整大小
這是正確的。除非像UIKit控件那樣在'-init'中設置合理的默認值,否則您不應該真正設置自己的框架。視圖控制器設置您的框架,並在調用時將所有內容放在'-layoutSubviews'中。如果父母想知道給定高度或寬度需要多大,則實現sizeThatFits。在'-layoutSubviews'和'-sizeThatFits'之間共享代碼就是事情發生的地方。 –
謝謝!但是,如果我調整我的subView與動畫_(調整在subView方法。我想要創建自定義視圖,這將是我的子視圖,包含UILabelView和UITableView下面的標籤,這將改變其行數)_,我應該發送消息 - sizeToFit到它的superView畢竟? – BergP
不,視圖不應直接瞭解其超視圖(或發送消息) - 這將是一個糟糕的設計選擇。你能澄清你的意思嗎「如果我調整我的subView動畫」?更具體地說:你會爲此目的調用什麼方法,以及消息的發送者是什麼對象? – diegoreymendez