61

Interface Builder を持っていますが、UIToolbar高さが 44px に固定されていることに気付きました。もちろん、これをもっと大きくしたいです。

Apple はこのコントロールのサイズ変更を許可していますか? もしそうなら、どうすればいいですか?

4

10 に答える 10

65

もちろん、フレームを別の方法で設定するだけです。

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

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

于 2010-01-26T00:08:08.917 に答える
46

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

ツールバー要素を選択し、[エディター] > [ピン] > [高さ] を選択して制約を作成します。ビュー コントローラー シーンに移動し、作成した Height(44) 制約を選択してから、必要な値を入力します。

于 2013-04-12T21:21:04.523 に答える
39

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

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

于 2011-05-18T19:12:06.953 に答える
17

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

-(CGSize)intrinsicContentSize {
    return CGSizeMake(UIViewNoIntrinsicMetric, 85);
}
于 2013-04-25T01:31:24.300 に答える
14

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

InterfaceBuilder で、ツールバー要素をクリックして選択します。Control+ツールバーの任意の場所にドラッグして離すと、上部にオプション「高さ」を示すポップアップメニューが表示され、それを選択します。

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

于 2015-11-07T01:07:25.453 に答える
7

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

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

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

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

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

于 2013-04-25T18:29:14.137 に答える
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;
    }
 }
于 2014-09-23T19:49:52.030 に答える
1

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

于 2013-10-18T09:04:21.373 に答える
0

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

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

ここに画像の説明を入力

于 2017-12-31T21:42:00.587 に答える