簡體   English   中英

使用元素的不同組合自動布局

[英]Auto-layout with different combinations of elements

我有一個帶有幾個不同圖標的UITableViewCell,可以以不同的組合顯示。 這是一個例子:

在此處輸入圖片說明

在這種情況下,有4種不同的組合:

  1. 所有3個元素都顯示在屏幕上(如圖所示)->在這種情況下,所有元素彼此等距
  2. 在這3個元素中有兩個顯示->在這種情況下,這兩個元素應該更優雅地占據空間,以便contentView到firstIcon,firstIcon到secondIcon以及secondIcon和contentView的底部都應等距隔開
  3. 顯示三個元素之一->在這種情況下,一個元素應位於屏幕中央
  4. 沒有任何元素顯示

我正在嘗試弄清如何在這種情況下布置約束,理想情況下不必在代碼中通過在運行Tableview時在運行時刪除和添加所有這些約束來做到這一點,這可能會使滾動變得混亂。

有什么辦法可以在設計時使它起作用嗎? 也許通過施加一些約束以使每個圖像盡可能垂直居中,並且只有在存在其他元素的情況下才可以抵抗。 丟失的元素可以“隱藏”或完全從contentView中刪除(以效果最好的為准)。

我認為您的設計時解決方案不起作用。 您可以指定沒有約束的東西-隱藏的視圖參與布局,如果要刪除視圖,則要刪除約束。

不要以為約束更新會給您帶來性能問題-首先以最簡單的方式進行操作,然后再進行測量。

在這種情況下,最簡單的方法可能是使用容器視圖來保存您的三個圖標。 可以將其固定在單元格的頂部和底部,並固定在距右邊緣正確的距離處。 這些約束不會改變。

可以將所有三個圖像視圖添加到此容器中。 在水平方向上,它們不需要約束-它們在x軸上可以默認為零,並且具有固有寬度。

根據單元格的內容,然后將每個圖像視圖設置為可見或不可見,刪除容器視圖上的約束,然后添加新的約束以提供垂直位置。 最簡單的約束條件是在容器視圖的底部使用乘數。 您可以將每個可見圖像視圖的中心Y限制為適當的乘數-如果只有一個可見,則乘數0.5,如果有兩個,則分別為0.33和0.66,對於所有三個,分別為0.25、0.5和0.75。

這不是一組復雜的約束,如果引起滾動問題,我會感到驚訝。

暫無
暫無

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

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