2010-01-25 83 views

回答

64

當然,只要設置它的框架是不同的:

[myToolbar setFrame:CGRectMake(0, 50, 320, 35)]; 

這會讓你的工具欄35個像素高。當然,這需要一個IBOutlet或以編程方式創建UIToolbar,但這非常容易。

+9

將尺寸調整'UIToolbar'從AppStore的拒絕? – 2011-12-08 12:03:31

+5

不,我試過並得到了槽。但有時候這取決於你蘋果傢伙的日常情緒。 – mstottrop 2012-05-21 18:32:45

+0

這不適用於iOS 5 – SpaceDog 2013-04-24 03:14:29

35

我發現,如果我設置iPad上的幀,隱藏時/顯示工具欄會自己復位回的44個像素的高度。我結束了必須重寫UIToolbar並更改方法:

// return 'best' size to fit given size. does not actually resize view. Default is return existing view size 
- (CGSize)sizeThatFits:(CGSize)size { 
    CGSize result = [super sizeThatFits:size]; 
    result.height = 55; 
    return result; 
};  

這將正確調整高度,即使使用hide/show。

+1

我發現,當我有高度的奇數值(非視網膜分辨率),原點偏移0.5像素。我不得不在VC的viewDidLoad方法中更正導航欄和工具欄的框架 – 2012-11-28 18:16:14

+0

@Ege,你能詳細解釋一下嗎? – MarqueIV 2013-01-20 10:16:59

+1

當然@MarqueIV,我重寫sizeThatFits的導航條(不工具欄)的自定義高度,結果發現,當我有一個高度不是4點多,當我隱藏導航欄,並重新顯示出來,其原始的y值爲0.5而不是0.我沒有遇到這種行爲,當我有一個自定義高度值是4的倍數 – 2013-01-20 13:27:46

45

如果不能在6 SDK工作,可以如下解決:

在工具欄中選擇元素,然後選擇編輯>針>身高創建的約束。 轉到您的視圖控制器場景並選擇創建的高度(44)約束,然後輸入所需的值。

+1

我很高興我發現了這個評論,我希望我可以投票給你一千倍以上。花費了很多時間試圖在代碼中弄清楚這一點。 – Kyle 2013-07-03 14:52:08

+0

真的很有幫助,謝謝:) – Niv 2013-11-09 15:31:34

+0

再一次欣賞,徘徊在整個網.. – 2014-03-16 07:54:01

15

在iOS 6中,使用自動佈局功能,最簡單的方法是使用UIToolbar子類替代instrinsicContentSize。這裏是我的應用程序中的代碼,工具欄很高。像往常一樣將其側面和底部固定在監視器的側面和底部。

-(CGSize)intrinsicContentSize { 
    return CGSizeMake(UIViewNoIntrinsicMetric, 85); 
} 
+0

我沒有看到它的作品,太棒了! – 2014-03-10 02:29:22

+0

我喜歡你的解決方案。我正在使用UINavigationController中的內置工具欄,所以我無法繼承子類。相反,我在'UIToolbar'上添加了'intrinsicContentSize',並返回了我想要的高度。 – 2016-02-26 22:20:54

+0

@KyleRedfearn「我使用UINavigationController中的內置工具欄,所以我不能繼承」不正確。 'initWithNavigationBarClass:toolbarClass:'可以讓你在導航控制器中使用UIToolbar子類。 – matt 2016-02-26 22:22:50

6

你也可以只編輯XIB文件:

打開它的源代碼,並發現,定義幀的UIToolbar的進入,一些沿

<string key="NSFrame">{{0,420}, {320,44}}</string>

,只需將值44更改爲您需要的大小即可。

這樣工具欄將會更高,並且在InterfaceBuilder中您將看到新的大小變灰,並且您將無法更改它,但是您不需要任何插座或代碼。

+0

這似乎不再適用。剛剛在XCode 5.1上進行了測試。1爲使用iOS7樣式的故事板。值正在重置爲其默認值。 – Martin 2014-05-11 21:12:38

+0

實際上適用於ios10 swift,您需要查找的行是'' – Lamar 2016-08-02 16:34:26

1

我不知道這將如何與Apple坐在一起 - 當然這取決於您希望如何使用工具欄 - 但您可以添加一個默認的UIView並將其類屬性檢查器中的類更改爲UIToolbar。這會讓您免費獲得透明度和可定製性(在這種情況下爲高度),但會損失條形按鈕項目的佈局。

2

只要你有在工具欄上的高度限制,你可以使用這個小片段,幫助我調整高度,對於繼承的UIView

-(void)setHeightConstraintTo:(CGFloat)height forView:(UIView *)view{ 
    NSPredicate *predicate = [NSPredicate predicateWithFormat:@"firstAttribute = %d",   NSLayoutAttributeHeight]; 
    NSArray *filteredArray = [view.constraints filteredArrayUsingPredicate:predicate]; 
    if(filteredArray.count > 0){ 
     NSLayoutConstraint *constraint = filteredArray.firstObject; 
     constraint.constant = height; 
    } 
} 
13

有關的Xcode 7.1的iOS 9,在汽車的佈局類,大小鎖定爲44px。 Xcode菜單選項編輯器>引腳>高度不存在,而是執行以下操作:

在InterfaceBuilder中,單擊工具欄元素將其選中。 控制+在工具欄中的任意位置向下拖動並釋放,彈出菜單將顯示在頂部顯示選項「高度」,選擇它。

您現在有一個高度約束一起工作,並根據需要進行調整。

+0

輝煌!我愛你!謝謝! – SpaceDog 2015-11-14 09:57:01

+0

好,乾淨,簡單。 – shannoga 2015-12-10 06:47:23

+1

我不認爲這適用於UINavigationController中的工具欄。 – SAHM 2016-04-26 01:46:47

0

夫特解決方案:

myToolbar.frame = CGRect(x: myToolbar.frame.origin.x, y: myToolbar.frame.origin.y, width: myToolbar.frame.size.width, height: 20) 

CGRectMake是過時的。這可以用CGRect代替。這會將工具欄的高度設置爲20.對於分段控制也是如此。

0

在Interface Builder中,也有使用「用戶定義的屬性運行的可能性」。

只需添加使用的keyPath設爲型「矩形」的「框」的條目,並設置所需的值。

enter image description here

相關問題