我在Interface Builder中有一個UIToolbar
,我注意到它被鎖定爲44px高。當然,我想讓這個更大。有沒有辦法改變UIToolbar的高度?
Apple允許調整此控件的大小嗎?如果是這樣,我該怎麼辦?
我在Interface Builder中有一個UIToolbar
,我注意到它被鎖定爲44px高。當然,我想讓這個更大。有沒有辦法改變UIToolbar的高度?
Apple允許調整此控件的大小嗎?如果是這樣,我該怎麼辦?
當然,只要設置它的框架是不同的:
[myToolbar setFrame:CGRectMake(0, 50, 320, 35)];
這會讓你的工具欄35個像素高。當然,這需要一個IBOutlet或以編程方式創建UIToolbar,但這非常容易。
我發現,如果我設置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。
我發現,當我有高度的奇數值(非視網膜分辨率),原點偏移0.5像素。我不得不在VC的viewDidLoad方法中更正導航欄和工具欄的框架 – 2012-11-28 18:16:14
@Ege,你能詳細解釋一下嗎? – MarqueIV 2013-01-20 10:16:59
當然@MarqueIV,我重寫sizeThatFits的導航條(不工具欄)的自定義高度,結果發現,當我有一個高度不是4點多,當我隱藏導航欄,並重新顯示出來,其原始的y值爲0.5而不是0.我沒有遇到這種行爲,當我有一個自定義高度值是4的倍數 – 2013-01-20 13:27:46
在iOS 6中,使用自動佈局功能,最簡單的方法是使用UIToolbar子類替代instrinsicContentSize
。這裏是我的應用程序中的代碼,工具欄很高。像往常一樣將其側面和底部固定在監視器的側面和底部。
-(CGSize)intrinsicContentSize {
return CGSizeMake(UIViewNoIntrinsicMetric, 85);
}
我沒有看到它的作品,太棒了! – 2014-03-10 02:29:22
我喜歡你的解決方案。我正在使用UINavigationController中的內置工具欄,所以我無法繼承子類。相反,我在'UIToolbar'上添加了'intrinsicContentSize',並返回了我想要的高度。 – 2016-02-26 22:20:54
@KyleRedfearn「我使用UINavigationController中的內置工具欄,所以我不能繼承」不正確。 'initWithNavigationBarClass:toolbarClass:'可以讓你在導航控制器中使用UIToolbar子類。 – matt 2016-02-26 22:22:50
你也可以只編輯XIB文件:
打開它的源代碼,並發現,定義幀的UIToolbar的進入,一些沿
<string key="NSFrame">{{0,420}, {320,44}}</string>
,只需將值44更改爲您需要的大小即可。
這樣工具欄將會更高,並且在InterfaceBuilder中您將看到新的大小變灰,並且您將無法更改它,但是您不需要任何插座或代碼。
我不知道這將如何與Apple坐在一起 - 當然這取決於您希望如何使用工具欄 - 但您可以添加一個默認的UIView並將其類屬性檢查器中的類更改爲UIToolbar。這會讓您免費獲得透明度和可定製性(在這種情況下爲高度),但會損失條形按鈕項目的佈局。
只要你有在工具欄上的高度限制,你可以使用這個小片段,幫助我調整高度,對於繼承的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;
}
}
有關的Xcode 7.1的iOS 9,在汽車的佈局類,大小鎖定爲44px。 Xcode菜單選項編輯器>引腳>高度不存在,而是執行以下操作:
在InterfaceBuilder中,單擊工具欄元素將其選中。 控制+在工具欄中的任意位置向下拖動並釋放,彈出菜單將顯示在頂部顯示選項「高度」,選擇它。
您現在有一個高度約束一起工作,並根據需要進行調整。
夫特解決方案:
myToolbar.frame = CGRect(x: myToolbar.frame.origin.x, y: myToolbar.frame.origin.y, width: myToolbar.frame.size.width, height: 20)
的CGRectMake
是過時的。這可以用CGRect
代替。這會將工具欄的高度設置爲20.對於分段控制也是如此。
將尺寸調整'UIToolbar'從AppStore的拒絕? – 2011-12-08 12:03:31
不,我試過並得到了槽。但有時候這取決於你蘋果傢伙的日常情緒。 – mstottrop 2012-05-21 18:32:45
這不適用於iOS 5 – SpaceDog 2013-04-24 03:14:29