2012-11-19 57 views
0

我有2個按鈕,我需要相對於放置到彼此:按鈕定位彼此

enter image description here

的按鈕中的內容和寬度而變化,所以不能只是地方他們在故事板中彼此相鄰。我可以在故事板中使用尾部或前導空間,並使關係成爲另一個按鈕而不是超級視圖?

回答

1

在IB中執行起來非常簡單 - 只需選擇兩個按鈕,然後從約束按鈕(看起來像H的那個)下方的約束按鈕中添加「水平間距」選項窗口。

+0

正是我需要的。 –

0

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

在.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); 

,都將是一致。我想這可以幫助

+0

這絕對是一個解決方案,如果我在哪裏做這一切在控制器。儘管如此,寧願在故事板上做。如果在故事板中無法做到,這絕對是我做這件事的方式。 –

1

我很好奇你爲什麼在故事板上做這個。如果您需要Xib的這種定製,也許您想創建一個單獨的「測試」項目來制定出該視圖。我強烈建議,從軟件工程的角度來看,但是我再次建議不要讓故事登上我的學生任何生產級別的項目,這對於某些人來說是有好處的,但是作爲一個單獨的開發人員而言,它有如此之多的下滑,並且呈指數級下降作爲一個團隊開發工具。結束我自以爲是的正義咆哮。

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

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

解決方案建議: 1.由於問題的複雜性,我的第一個建議可能看起來不那麼有趣。以編程方式編制視圖,使用相對幾何數學可以解決所有問題,但它可能看起來令人望而生畏,但它確實是我認爲通過創建自定義視圖控制器的最乾淨和最簡單的方式,因爲信息更新控制器將管理視圖以適當的方式顯示,而且這樣做的好處是,如果你真的擅長相對幾何,你的代碼將會在成語中起作用。

  1. 解決它與彈簧和支柱,然後以各種方式,你能想到的,但是這不會是一個數學證明基於幾何方法好測試。爲什麼你會問,因爲更高層次的解決方案並不能保證你的控制。但強調相對調整大小和定位,你設置了這一點。

  2. 這是不必要的浪費,將導致性能降低了很多,但我有它在計算機科學上繳的前輩。(可憐的傢伙從來沒有得到更多的則2/15主觀分)

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

+0

你在說什麼?這是蘋果新版式約束系統解決的一個非常簡單的問題。 – rdelmar

+0

謝謝你的精心解答。它最終就像在按鈕上製作水平間距一樣簡單。 –

+0

很簡單,對於「大多數」用途來說,這是推薦的方式。但是,發佈的問題與酒吧中的可變內容有關。處理動態內容時,Struts和字符串不能總是被計算在內,特別是如果說內容或其格式超出了屏幕限制。如果我的按鈕的動態內容總是在1到9個字符之間,那麼我會彈出這個窗口,而不要再考慮它。但是,如果我的動態內容是1-?我不想 」?」咬我導致一個糟糕的應用程序體驗。 –