23

私のアプリでは、ナビゲーションのタイトルとして配置したい png に保存されているカスタム タイトル (フォントではない文字を含む) がいくつかあります。タイトルの文字は、異なるビュー コントローラーごとにすべて同じサイズにしたいので、イラストレーターでは、すべて同じサイズと幅にする作業を行いました (短い文字列を考慮して空白スペースを確保します)。私は次のことを行います:

UIImageView *titleImageView = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"SelectAnAlbumTitleLettering"]];
titleImageView.contentMode = UIViewContentModeCenter;
self.navigationItem.titleView = titleImageView;
[titleImageView release];

navigationBarまた、画像は、それぞれに含まれる要素(戻るボタン、右ボタンなど)に基づいて任意にサイズ変更および配置されているようです。

titleViewどうすれば制御できるようになり、必要なサイズと位置を実装できるようになり、任意にサイズ変更/再配置されないようになるのでしょうか。

4

5 に答える 5

46

イメージ ビューをタイトル ビューとして使用する代わりに、イメージ ビューを含む別のビューを作成します。そのビューをナビゲーション アイテムのタイトル ビューとして設定します。これで、タイトル ビュー内で画像ビューのフレームを自由に調整できるようになりました。

于 2013-04-17T20:48:43.050 に答える
32

UINavigationbar titleview のサイズと位置を制御できます。imageview を titleview として直接設定しないでください。代わりに、カスタム UIView を作成し、要件に従ってそのフレームを設定し、titleImageView をそのサブビューとして追加します。

UIView *backView =[[UIView alloc] initWithFrame:CGRectMake(0, 0, 200, 40)];// Here you can set View width and height as per your requirement for displaying titleImageView position in navigationbar 
[backView setBackgroundColor:[UIColor greenColor]];
UIImageView *titleImageView = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"SelectAnAlbumTitleLettering"]];
titleImageView.frame = CGRectMake(45, 5,titleImageView.frame.size.width , titleImageView.frame.size.height); // Here I am passing origin as (45,5) but can pass them as your requirement. 
[backView addSubview:titleImageView];
//titleImageView.contentMode = UIViewContentModeCenter;
self.navigationItem.titleView = backView;

お役に立てば幸いです。

于 2013-04-17T20:55:52.790 に答える
12

Swift では、次のように実行できます。

    var titleView = UIView(frame: CGRectMake(0, 0, 100, 40))
    var titleImageView = UIImageView(image: UIImage(named: "cocolife"))
    titleImageView.frame = CGRectMake(0, 0, titleView.frame.width, titleView.frame.height)
    titleView.addSubview(titleImageView)
    navigationItem.titleView = titleView
于 2015-10-16T09:57:00.607 に答える
1

更新された Swift4 コード:

    var titleView = UIView(frame: CGRect(x: 0, y: 0, width: 100, height: 40))
    var titleImageView = UIImageView(image: UIImage(named: "headerlogo"))
    titleImageView.frame = CGRect(x: 0, y: 0, width: titleView.frame.width, height: titleView.frame.height)
    titleView.addSubview(titleImageView)
    navigationItem.titleView = titleView
于 2020-01-04T11:38:54.463 に答える