簡體   English   中英

按鈕相對於彼此定位

[英]Button positioning in relation to each other

我有2個按鈕,我需要相互放置:

在此輸入圖像描述

按鈕的內容和寬度各不相同,所以我不能只在故事板中將它們放在一起。 我可以在故事板中使用尾隨空格或前導空格,並將關系設為另一個按鈕而不是超級視圖嗎?

在IB中很容易做到 - 只需選擇兩個按鈕,然后在窗口右下角的約束按鈕(看起來像H的那個)中添加“水平間距”選項。

我很好奇為什么你在故事板上這樣做。 如果您需要Xib這個自定義,或許您想要創建一個單獨的“測試”項目來計算出視圖。 我強烈建議從軟件工程的角度來看,但我再次建議不要讓我的學生參加任何生產級項目的故事登機,它對某些人有好處,但它作為一個單獨的開發人員有很多下降,並且指數下降得多作為一個團隊開發工具。 結束我自以為是的咆哮。

如果我理解正確,有三種方法可以解決您的問題。 問題:

  • 我有一個視圖,最低層是滾動視圖,我有兩個UIButtons上面的子視圖。
  • 由於內容(假設文本/字體更改,可能的圖片?),按鈕的大小會有所不同。
  • 我希望按鈕以一致的方式彼此相鄰,即使它們的大小會有所不同。
  • 我想支持多種方向和可能的多種習語。

解決方案建議:1。由於問題的復雜性,我的第一個建議可能看起來有點不那么有趣了。 以編程方式計算視圖,使用相對幾何數學可以解決所有問題,這可能看起來令人生畏但通過創建自定義視圖控制器來實際上是最干凈最簡單的方法,因為信息更新控制器將管理視圖要正確顯示,這樣做的好處是,如果你真的擅長相對幾何,你的代碼將適用於習語。

  1. 用彈簧和支柱進行測試,然后以你能想到的各種方式進行測試,但這不如基於幾何的方法的數學證明那么好。 您可能會問為什么,因為更高級別的解決方案並不能保證您的控制權。 但是在你設置時強調相對調整大小和定位。

  2. 這是浪費不必要的,並且會使性能降低很多,但是我已經被計算機科學的高級學生接受了。(可憐的家伙從來沒有超過2/15的主觀點)

為幾乎所有情況創建一個視圖,並在它們之間進行過於復雜的控制器切換。 這方面的性能成本是巨大的,很可能是某人找到一種不一致的屏幕的手段。

你只能在課堂上使用它,只是一個建議

在.h

UIButton *firstButton;
UIButton *secondButton; 

在.m

對於第一個按鈕:

firstButton = [UIButton buttonWithType:UIButtonTypeRoundedRect];
firstButton.frame = CGRectMake(100, 100, 150, 60);//this can be changed at run time
[firstButton setTitle:@"TAP1" forState:UIControlStateNormal];
[firstButton addTarget:self action:@selector(someMethod1)
 forControlEvents:UIControlEventTouchUpInside];
[self.view addSubview:firstButton]; 

對於第二個按鈕:

  secondButton = [UIButton buttonWithType:UIButtonTypeRoundedRect];
      secondButton.frame = CGRectMake(firstButton.frame.origin.x+10,    
       firstButton.frame.origin.y+10 , firstButton.frame.size.width,  
       firstButton.frame.size.height);

  [secondButton setTitle:@"TAP2" forState:UIControlStateNormal];
  [secondButton addTarget:self action:@selector(someMethod2)
  forControlEvents:UIControlEventTouchUpInside];
  [self.view addSubview:secondButton];

您可以根據上述10以外的需要設置自己的填充值; 每次你的firstButton寬度改變時,只需運行

      secondButton.frame = CGRectMake(firstButton.frame.origin.x+10,    
       firstButton.frame.origin.y+10 , firstButton.frame.size.width,  
       firstButton.frame.size.height);

兩者都會對齊。 我猜這有幫助

暫無
暫無

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

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