12

UIToolbarにラベルを付けています(このヒントによると、UIToolbarへのUILabelの追加)。

ただし、ツールバーの左側にはボタンがあるため、柔軟なスペースを使用すると、ラベルが中央から外れます。これが、私が望む場所です。どういうわけか、このツールバーアイテムを中央に配置して、ツールバーの中央に配置したままにすることはできますか?

(ボタンとダミーの固定スペース、サイコロなしのバランスをとってみました。)

ありがとう!

4

5 に答える 5

39

中央のアイテムの左右に、行ったように柔軟なスペースアイテムを追加します。次に、最後に固定スペースアイテムを追加し、幅を左ボタンの幅(約28ピクセル)に設定します。

UIBarButtonItem *fixedItem = [[[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemFixedSpace target:nil action:NULL] autorelease];
fixedItem.width = 28;
于 2010-12-31T06:26:27.370 に答える
6

UILabelテキスト/タイトルをツールバーの中央に配置するには、以下のような単純なものを使用できます。

UILabel *labelTitle = [[UILabel alloc] init];
labelTitle.font =[UIFont fontWithName:@"Helvetica-Bold" size:18];
labelTitle.backgroundColor = [UIColor clearColor];
labelTitle.textAlignment = UITextAlignmentCenter;
labelTitle.userInteractionEnabled = NO;
labelTitle.text = @"Your Title";
[labelTitle sizeToFit];
CGRect labelTitleFrame = labelTitle.frame;
labelTitleFrame.size.width = self.toolbar.bounds.size.width;
labelTitleFrame.origin.y = (self.toolbar.bounds.size.height - labelTitleFrame.size.height) / 2;
labelTitle.frame = labelTitleFrame;
labelTitle.autoresizingMask = UIViewAutoresizingFlexibleWidth;
// Just add UILabel like UIToolBar's subview 
[self.toolbar addSubview:labelTitle];
[labelTitle release];
labelTitle = nil;
于 2011-04-14T10:47:45.840 に答える
4

最も簡単な方法は、親ビューでバーのにラベルを配置し、そこで位置合わせすることです。

于 2010-03-24T20:30:32.940 に答える
1

はい、ツールバー項目を中央に配置できます。次のように、ツールバーに2つの柔軟なスペースを配置するだけです。

UIBarButtonItem *flexibaleSpaceBarButton = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemFlexibleSpace target:nil action:nil];

toolbar.items = [NSArray arrayWithObjects:loginButton,flexibaleSpaceBarButton,toolBarLabel,flexibaleSpaceBarButton, nil];
于 2012-09-27T04:23:41.637 に答える
0

フレキシブルスペースまたは固定スペースを使用しない場合は、以下のように内部UIToolbarUIStackViewディストリビューションを変更できます。toolbar.centerItemsHorizontally()ビューコントローラのviewDidLayoutSubviews()メソッドを呼び出す必要があることに注意してください。

extension UIView {
    func allSubviews() -> [UIView] {
        var _allSubviews: [UIView] = []
        for subview in self.subviews {
            _allSubviews += subview.allSubviews()
            _allSubviews.append(subview)
        }
        return _allSubviews
    }
}
extension UIToolbar {
    func centerItemsHorizontally() {
        allSubviews().forEach { subview in
            if let stackView = subview as? UIStackView {
                stackView.distribution = .fillEqually
            }
        }
    }
}

結果: ここに画像の説明を入力してください

于 2021-06-19T11:35:33.333 に答える