簡體   English   中英

自動布局-根據屏幕大小動態更改子視圖大小

[英]Autolayout - Dynamically change subview size depending on screen size

我已經在自動布局中正確設置了我的設計,但是現在我想嘗試一種方法來根據屏幕大小動態更改圖標和字體的視圖大小(請參見下圖),但我沒有設置在自動布局中玩耍似乎會拉長圖像。 這是我必須完全以編程方式要做的事情嗎? 如您所見,iPhone 6版本的空間太大了,所以我需要一種方法來填充它。

屏幕尺寸

您在這里有幾個選擇。

1)您可以通過編程方式進行操作,但是很多人搞砸了數學,代碼也不是很干凈。 最好的方法(我認為)是在要更改的對象上設置布局約束,然后將其與IBOutlet掛鈎(您可以掛鈎約束,就像掛鈎UI元素一樣)。 從那里,您可以將myConstraint.constant設置為所需的任何值。

2)您還可以設置<=或> =值的約束。 這使您可以使事物變大或變小。 您可以使用這些技巧。 通常,您可以結合使用這些設置來設置事物的最小和最大大小。

3)Xcode 6允許您為不同的屏幕尺寸設置不同的約束。 這是最新的方式,可能也是Apple希望您執行的方式。 也應該有很多有關如何使用此選項的信息。

您必須以編程方式手動控制字體大小。 但是,圖像尺寸可以縮放。 只需將圖像固定到其父對象即可,而不必限制其寬度/高度,而應添加寬高比的約束。

結合使用大小類和自動布局,這是制作UIControls的一種樂趣。

我試圖找出一種方法來動態更改圖標的視圖大小,這是我必須完全以編程方式完成的事情嗎? :無需編程,您需要深入了解大小類,只需處理視圖,寬高比,約束(兄弟姐妹)之間的關系,這樣就不會出現其他沖突您可以在此處查看更多信息

我正在嘗試找出一種根據屏幕大小動態更改字體的方法在這里,您可以將其添加到與大小類相關的屬性檢查器中從Doc中進行檢查

在此處輸入圖片說明

我認為解決此問題的最佳方法是以編程方式添加約束。 它可以讓您更好地控制自己在做什么。 您可以查詢屏幕大小,然后確定要添加的約束的大小。 如果需要根據布局方向更改約束,請聽取方向更改,然后更改約束。 之后,您需要調用setNeedsUpdateConstraints方法。

我寫這個關於這個問題的博客文章。 在那里您可以獲得有關此的更多信息。 此外, github鏈接包含有關如何解決此問題的更多代碼示例。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM