web-dev-qa-db-ja.com

UIToolbarの高さを変更する方法はありますか?

Interface BuilderにUIToolbarがあり、高さが44ピクセルに固定されていることに気付きました。もちろん、これをもっと大きくしたいと思います。

Appleこのコントロールのサイズ変更を許可しますか?その場合、どうすればよいですか?

59
mac_55

もちろん、フレームを異なるように設定するだけです。

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

これにより、ツールバーの高さが35ピクセルになります。もちろん、これにはIBOutletまたはプログラムでUIToolbarを作成する必要がありますが、それは非常に簡単です。

64
David Kanarek

SDK 6でそれが機能しない場合は、次のように解決できます。

ツールバー要素を選択し、エディター>ピン>高さを選択して、制約を作成します。 View Controller Sceneに移動して、作成されたHeight(44)制約を選択し、必要な値を入力します。

45
ericmaciel

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;
};     

これにより、非表示/表示でも高さを正しく調整できます。

38

自動レイアウトを使用したiOS 6での最も簡単なアプローチは、instrinsicContentSizeをオーバーライドするUIToolbarサブクラスです。これは、ツールバーの背が高いアプリからのコードです。その側面と底面は、通常どおり、スーパービューの側面と底面に固定されています。

-(CGSize)intrinsicContentSize {
    return CGSizeMake(UIViewNoIntrinsicMetric, 85);
}
15
matt

Xcode 7.1 iOS 9の場合、自動レイアウトでは、サイズは44pxにロックされます。 Xcodeメニューオプションの[エディター]> [ピン]> [高さ]はありません。代わりに次のアクションを実行します。

InterfaceBuilderで、ツールバー要素をクリックして選択します。 Ctrlキーを押しながらドラッグしてツールバーの任意の場所を下に移動すると、ポップアップメニューが表示され、上部に[高さ]オプションが表示されます。

これで、必要に応じて作業および調整するための高さ制約があります。

13
cavalleydude

また、xibファイルを編集することもできます。

ソースコードとして開き、UIToolbarのフレームを定義するエントリを見つけます。

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

44の値を必要なサイズに変更するだけです。

これにより、ツールバーの高さが高くなり、InterfaceBuilderで新しいサイズがグレー表示され、変更できなくなりますが、アウトレットやコードは必要ありません。

6
Radu Diță

ツールバーに高さの制約がある限り、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;
    }
 }
2
Alberto Lopez

これがどのようにApple-と並んでいるのかわかりません。もちろん、ツールバーの使用方法によって異なります-しかし、デフォルトのUIViewを追加し、プロパティインスペクターでクラスを変更できますUIToolbar:これにより、バーボタン項目のレイアウトを犠牲にして、透明性とカスタマイズ性(この場合は高さ)が無料で提供されます。

1
Robin Macharg

インターフェースビルダーでは、「ユーザー定義のランタイム属性」を使用する可能性もあります。

タイプ「Rect」の「frame」に設定されたキーパスを持つエントリを追加し、必要な値を設定します。

enter image description here

0
FredericK

迅速なソリューション:

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

CGRectMakeは廃止されました。これはCGRectに置き換えることができます。これにより、ツールバーの高さが20に設定されます。セグメント化されたコントロールでも同様に機能します。

0
Ragul Parani