Interface BuilderにUIToolbar
があり、高さが44ピクセルに固定されていることに気付きました。もちろん、これをもっと大きくしたいと思います。
Appleこのコントロールのサイズ変更を許可しますか?その場合、どうすればよいですか?
もちろん、フレームを異なるように設定するだけです。
[myToolbar setFrame:CGRectMake(0, 50, 320, 35)];
これにより、ツールバーの高さが35ピクセルになります。もちろん、これにはIBOutletまたはプログラムでUIToolbarを作成する必要がありますが、それは非常に簡単です。
SDK 6でそれが機能しない場合は、次のように解決できます。
ツールバー要素を選択し、エディター>ピン>高さを選択して、制約を作成します。 View Controller Sceneに移動して、作成されたHeight(44)制約を選択し、必要な値を入力します。
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;
};
これにより、非表示/表示でも高さを正しく調整できます。
自動レイアウトを使用したiOS 6での最も簡単なアプローチは、instrinsicContentSize
をオーバーライドするUIToolbarサブクラスです。これは、ツールバーの背が高いアプリからのコードです。その側面と底面は、通常どおり、スーパービューの側面と底面に固定されています。
-(CGSize)intrinsicContentSize {
return CGSizeMake(UIViewNoIntrinsicMetric, 85);
}
Xcode 7.1 iOS 9の場合、自動レイアウトでは、サイズは44pxにロックされます。 Xcodeメニューオプションの[エディター]> [ピン]> [高さ]はありません。代わりに次のアクションを実行します。
InterfaceBuilderで、ツールバー要素をクリックして選択します。 Ctrlキーを押しながらドラッグしてツールバーの任意の場所を下に移動すると、ポップアップメニューが表示され、上部に[高さ]オプションが表示されます。
これで、必要に応じて作業および調整するための高さ制約があります。
また、xibファイルを編集することもできます。
ソースコードとして開き、UIToolbarのフレームを定義するエントリを見つけます。
<string key="NSFrame">{{0,420}, {320,44}}</string>
44の値を必要なサイズに変更するだけです。
これにより、ツールバーの高さが高くなり、InterfaceBuilderで新しいサイズがグレー表示され、変更できなくなりますが、アウトレットやコードは必要ありません。
ツールバーに高さの制約がある限り、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;
}
}
これがどのようにApple-と並んでいるのかわかりません。もちろん、ツールバーの使用方法によって異なります-しかし、デフォルトのUIViewを追加し、プロパティインスペクターでクラスを変更できますUIToolbar:これにより、バーボタン項目のレイアウトを犠牲にして、透明性とカスタマイズ性(この場合は高さ)が無料で提供されます。
迅速なソリューション:
myToolbar.frame = CGRect(x: myToolbar.frame.Origin.x, y: myToolbar.frame.Origin.y, width: myToolbar.frame.size.width, height: 20)
CGRectMake
は廃止されました。これはCGRect
に置き換えることができます。これにより、ツールバーの高さが20に設定されます。セグメント化されたコントロールでも同様に機能します。