Interface Builder を持っていますが、UIToolbar
高さが 44px に固定されていることに気付きました。もちろん、これをもっと大きくしたいです。
Apple はこのコントロールのサイズ変更を許可していますか? もしそうなら、どうすればいいですか?
Interface Builder を持っていますが、UIToolbar
高さが 44px に固定されていることに気付きました。もちろん、これをもっと大きくしたいです。
Apple はこのコントロールのサイズ変更を許可していますか? もしそうなら、どうすればいいですか?
もちろん、フレームを別の方法で設定するだけです。
[myToolbar setFrame:CGRectMake(0, 50, 320, 35)];
これにより、ツールバーの高さが35ピクセルになります。もちろん、これにはIBOutletまたはプログラムでUIToolbarを作成する必要がありますが、これは非常に簡単です。
SDK 6 でそれが機能しない場合は、次のように解決できます。
ツールバー要素を選択し、[エディター] > [ピン] > [高さ] を選択して制約を作成します。ビュー コントローラー シーンに移動し、作成した 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 では、最も単純なアプローチは、オーバーライドする UIToolbar サブクラスですinstrinsicContentSize
。これは、ツールバーが高い私のアプリのコードです。その側面と底面は、通常どおり、スーパービューの側面と底面に固定されています。
-(CGSize)intrinsicContentSize {
return CGSizeMake(UIViewNoIntrinsicMetric, 85);
}
Xcode 7.1 iOS 9 の場合、自動レイアウトではサイズが 44px に固定されます。Xcode のメニュー オプション [エディター] > [ピン] > [高さ] がありません。代わりに、次の操作を行います。
InterfaceBuilder で、ツールバー要素をクリックして選択します。Control+ツールバーの任意の場所にドラッグして離すと、上部にオプション「高さ」を示すポップアップメニューが表示され、それを選択します。
これで、必要に応じて操作および調整するための高さの制約ができました。
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 に変更できます。これにより、透明性とカスタマイズ性 (この場合は高さ) が無料で提供されますが、バー ボタン アイテムのレイアウトが犠牲になります。