2017-08-03 122 views
2

我正在用相當多的按鈕創建應用程序。我已經將所有必需的按鈕放在視圖上,並且設置了所有約束。一切都在故事板上完成。更改約束條件

我想創建一個按鈕,它將更改所有按鈕佈局。爲了做到這一點,我將需要改變所有的按鈕約束。因此,例如,點擊「更改按鈕佈局」後,所有按鈕將在視圖上改變其位置,如x座標+20和y座標+20。

有沒有簡單的方法來做到這一點?或者如果點擊「更改按鈕佈局」按鈕,我需要在代碼中以編程方式更改所有約束?

感謝

+0

是您的按鈕相互依賴的約束。 –

+0

不,他們沒有。它們對齊到中心x和y,並且給每個按鈕賦予乘數以將每個按鈕放到正確的位置。 –

回答

0

所有按鈕創建一個容器,並管理該容器的限制。

+0

我真的很感激,如果可以發佈如何完成的示例代碼。提前致謝。 –

0

由於antonsergeev88建議您應創建一個容器並管理其約束。但是如果你想要移動每個按鈕的特定值,你可以使用CGAffineTransform。

SWIFT

myButton.transform = CGAffineTransform(translationX: 20, y: 20) 

目標C

myButton.transform = CGAffineTransformMakeTranslation(20, 20); 
0

嘗試創建按鈕編程 目的-C //程序

self.button = [UIbutton buttonWithtype:UIbuttonTypeCustom];

self.button.frame = cgrectMake(x軸值,y軸值,寬度,高度);

//的CGRect(0,50,100,100)在(0,50)與寬度100和高度100創建按鈕..

self.button的setTitle:@ 「按鈕一次」 forState:UIControlStateNormal; [self.view addsubView:self.button];

2

您有幾種選擇:

  1. 正如前面所說,創建一個容器,你會編程方式或通過故事板添加所有的按鈕,然後操作將自動操縱它的所有孩子們的容器。
  2. 您可以通過編程創建所有按鈕,這可能是正確的方法。您可以將它們全部保存在某種數組或列表中,然後在for/foreach /任何其他循環中操作它們的屬性。
  3. 我不完全確定是否可以通過某種類型的吸氣器從故事板中獲取所有物品,以防您真的想要在故事板上創建的所有按鈕。有了這個getter,你可以填充上述數組並通過循環以相同的方式操作它。

做到這一點的最好方法可能是簡單地創建一個容器並將其中的所有按鈕放入其中然後操作容器。

+0

如果您只需要移動該容器,則可以隨時訪問容器內的特定小孩。 你錯過了評論的一部分嗎? –

+0

按容器做你的意思是一個新的視圖,其中所有的按鈕將被放置或類似IBCollection? –

+0

這取決於你採取的方法。它可以是一個新的視圖,它可以包裝所有的孩子(按鈕),或者如果你想以編程的方式做到這一點,它將是某種類型的集合,任何你喜歡的,仍然必須轉換成view + children格式爲被添加到界面。你應該詳細說明你想達到的目標。用例會有所幫助。 –