iPhone Gezinme Çubuğu Başlığı metin rengi


283

İOS Gezinme Çubuğu başlık rengi varsayılan olarak beyazdır. Farklı bir renkle değiştirmenin bir yolu var mı?

navigationItem.titleViewBir görüntü kullanan yaklaşımın farkındayım . Tasarım becerilerim sınırlı olduğu ve standart parlaklığı elde edemediğim için metin rengini değiştirmeyi tercih ediyorum.

Herhangi bir içgörü çok takdir edilecektir.


Steven Fisher'in cevabına dayanarak, gezinme çubuğunuza özel renkli başlıklar ekleme işlemini basitleştiren bir kod parçası gönderdim. Ayrıca başlığın değiştirilmesini de destekler. I aramak! Seni hayal kırıklığına uğratmayacak.
Erik B

1
Erik: Cevabım hakkında benimkini not aldım. Cevabımı kodunuzla güncelleyeceğim, ancak oyunuzu almak istemezdim. Akıllı çözüm, btw.
Steven Fisher

Yanıtlar:


423

Modern yaklaşım

Tüm gezinti denetleyicisi için modern yol… gezinti denetleyicinizin kök görünümü yüklendiğinde bunu bir kez yapın.

[self.navigationController.navigationBar setTitleTextAttributes:
   @{NSForegroundColorAttributeName:[UIColor yellowColor]}];

Ancak, bunun sonraki görünümlerde bir etkisi yoktur.

Klasik yaklaşım

Eski yol, görünüm denetleyicisi başına (bu sabitler iOS 6 içindir, ancak iOS 7 görünümünde görünüm denetleyicisi başına yapmak istiyorsanız aynı yaklaşımı ancak farklı sabitlerle isteyeceksiniz):

Bir kullanmak zorunda UILabelolduğu titleViewbir navigationItem.

Etiket:

  • Net bir arka plan rengine sahip ( label.backgroundColor = [UIColor clearColor]).
  • Kalın 20pt sistem yazı tipi ( label.font = [UIFont boldSystemFontOfSize: 20.0f]) kullanın .
  • % 50 alfa ( label.shadowColor = [UIColor colorWithWhite:0.0 alpha:0.5]) ile siyah bir gölgeye sahip olun .
  • Metin hizalamasını da ortalanmış olarak ayarlamak istersiniz ( label.textAlignment = NSTextAlignmentCenter( UITextAlignmentCentereski SDK'lar için).

Etiket metni rengini istediğiniz özel renk olarak ayarlayın. Metnin gölgeye karışmasına neden olmayan, okunması zor olan bir renk istiyorsunuz.

Bunu deneme yanılma yoluyla hallettim, ama ortaya koyduğum değerler sonuçta Apple'ın seçtiği şey değil. :)

Bunu doğrulamak isterseniz, bu kodu damla initWithNibName:bundle:içinde PageThreeViewController.mbir en Apple NavBar numunesi . Bu, metni sarı bir etiketle değiştirir. Bu, renk haricinde Apple'ın koduyla üretilen orijinalden ayırt edilemez olmalıdır.

- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil
{
    self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil];
    if (self)
    {
        // this will appear as the title in the navigation bar
        UILabel *label = [[[UILabel alloc] initWithFrame:CGRectZero] autorelease];
        label.backgroundColor = [UIColor clearColor];
        label.font = [UIFont boldSystemFontOfSize:20.0];
        label.shadowColor = [UIColor colorWithWhite:0.0 alpha:0.5];
        label.textAlignment = NSTextAlignmentCenter;
                           // ^-Use UITextAlignmentCenter for older SDKs.
        label.textColor = [UIColor yellowColor]; // change this color
        self.navigationItem.titleView = label;
        label.text = NSLocalizedString(@"PageThreeTitle", @"");
        [label sizeToFit];
    }

    return self;
}

Düzenleme: Ayrıca, aşağıdaki Erik B'nin cevabını okuyun. Kodum etkiyi gösteriyor, ancak kodu bunu mevcut bir görünüm denetleyicisine bırakmak için daha basit bir yol sunuyor.


2
Etiket çerçevesini kullanarak metninin boyutuna ayarlarsanız sizeWithFont:, standart etiketin otomatik hizalama davranışını sihirli bir şekilde üstlenir.
grahamparks

1
Ancak sizeToFit kullanırsanız, otomatik kesmeyi kaybedersiniz.
Steven Fisher

3
NOT: Bu özel başlık ayarlamak için eski bir yol, Erik B.
Elia Palme

1
SizeToFit'in çalıştığını doğruladı, bu yüzden güncellenmiş cevap. Ayrıca, Erik B'nin cevabını okumak için not eklendi.
Steven Fisher

1
label.textAlignment = UITextAlignmentCenter, iOS6.0'dan beri kullanımdan kaldırıldı, bunun yerine NSTextAlignmentCenter kullanın
Jasper

226

Bu oldukça eski bir iş parçacığı olduğunu biliyorum, ancak yeni kullanıcılar için iOS 5'in başlık özelliklerini oluşturmak için yeni bir özellik getirdiğini bilmek yararlı olacaktır.

setTitleTextAttributesYazı tipi, renk, ofset ve gölge rengini ayarlamak için UINavigationBar'ı kullanabilirsiniz .

Ayrıca UINavigationBars, uygulamanızın tamamı için aynı varsayılan UINavigationBar'ın Başlık Metni Özelliklerini ayarlayabilirsiniz .

Örneğin şöyle:

NSDictionary *navbarTitleTextAttributes = [NSDictionary dictionaryWithObjectsAndKeys:
                                            [UIColor whiteColor],UITextAttributeTextColor, 
                                            [UIColor blackColor], UITextAttributeTextShadowColor, 
                                            [NSValue valueWithUIOffset:UIOffsetMake(-1, 0)], UITextAttributeTextShadowOffset, nil];

[[UINavigationBar appearance] setTitleTextAttributes:navbarTitleTextAttributes];

11
'UITextAttributeTextColor' iOS 7'de kullanımdan kaldırıldı. İOS 7 anahtarı 'NSForegroundColorAttributeName'
Keller

1
Bunun TÜM gezinme çubuklarını değiştireceğini unutmayın, bu da genellikle istediğiniz bir şeydir.
Ash

1
Lütfen bunu doğru cevap olarak işaretleyin - yukarıdaki UILabel yöntemi bu yöntemlerle gereksizdir.
Mic Fok

180

İOS 5'te navigationBar başlık rengini şu şekilde değiştirebilirsiniz:

navigationController.navigationBar.titleTextAttributes = @{NSForegroundColorAttributeName: [UIColor yellowColor]};

8
@BartSimpson Kabul ediyorum! İOS 7 için, güncelleme UITextAttributeTextColoriçin NSForegroundColorAttributeName. Tıkır tıkır çalışıyor!
John Erck

BU ÇALIŞIYOR! anlamak istediğim nasıl ?! titleTextAttributes, 'NSString UIKit Ekleme Başvurusu' altında belirtilen 'Metin Öznitelikleri Sözlükleri Anahtarları'nda belirtilen önceden tanımlanmış bir anahtar kümesine sahip bir sözlüğü kabul eder. Bahsettiğiniz anahtarı nasıl alır?
AceN

... ve çalıştığı için 'varsayılan' renk tonunu nasıl alabilirim?
AceN

Ortam self.navigationController.navigationBar.tintColorbenim için çalışmadı. Bu oldu.
JRam13

127

Steven Fisher'ın cevabına dayanarak bu kod parçasını yazdım:

- (void)setTitle:(NSString *)title
{
    [super setTitle:title];
    UILabel *titleView = (UILabel *)self.navigationItem.titleView;
    if (!titleView) {
        titleView = [[UILabel alloc] initWithFrame:CGRectZero];
        titleView.backgroundColor = [UIColor clearColor];
        titleView.font = [UIFont boldSystemFontOfSize:20.0];
        titleView.shadowColor = [UIColor colorWithWhite:0.0 alpha:0.5];

        titleView.textColor = [UIColor yellowColor]; // Change to desired color

        self.navigationItem.titleView = titleView;
        [titleView release];
    }
    titleView.text = title;
    [titleView sizeToFit];
}

Bu kodun avantajı, çerçeveyle düzgün şekilde çalışmanın yanı sıra, kontrol cihazınızın başlığını değiştirirseniz özel başlık görünümünün de güncellenmesi olacaktır. Manuel olarak güncellemeye gerek yok.

Bir başka büyük avantaj, özel başlık rengini etkinleştirmeyi gerçekten kolaylaştırmasıdır. Tek yapmanız gereken bu yöntemi kontrolöre eklemek.


3
Bunun kesinlikle en iyi çözüm olduğuna katılıyorum. SizeWithFont kullanmaya gerek yok ve ben setTitle yöntemini geçersiz kılma fikrini seviyorum.
Elia Palme

@ Sr.Richie Kodu özel bir gezinme denetleyicisine yerleştirmemelisiniz. Başlığın rengini değiştirmeniz gereken tüm görünüm denetleyicilerine koymalısınız. Muhtemelen özel bir navigasyon kontrolörü bile istemezsiniz.
Erik B

Benim için çalışmıyor. Ben onun [UINavigationBar görünüm] yöntemi kullandım çünkü düşünüyorum (etiket başlıkView her zaman nil olduğu için çalışmıyor)
Matej

1
İOS5 veya sonraki bir sürümdeyseniz, aşağıdaki eksi cevabı okumalısınız. İyi çalışır ve rezervasyonda kalır bir astar.
algal

self.title = @ "dizemizi" eklememiz gerekir; viewDidLoad.then sadece yukarıdaki kod çalışır.
Hari1251

40

İOS 7 kullanımı için yukarıdaki önerilerin çoğu artık kullanımdan kaldırıldı -

NSDictionary *textAttributes = [NSDictionary dictionaryWithObjectsAndKeys: 
                               [UIColor whiteColor],NSForegroundColorAttributeName, 
                               [UIColor whiteColor],NSBackgroundColorAttributeName,nil];

self.navigationController.navigationBar.titleTextAttributes = textAttributes;
self.title = @"Title of the Page";

Ayrıca, ayarlanabilecek çeşitli metin özellikleri için NSAttributedString.h dosyasına bakın.


38

IOS 7 ve 8'de, yeşilin diyelim ki Başlığın rengini değiştirebilirsiniz

self.navigationController.navigationBar.titleTextAttributes = [NSDictionary dictionaryWithObject:[UIColor greenColor] forKey:NSForegroundColorAttributeName];

6
Swift:self.navigationController!.navigationBar.titleTextAttributes = NSDictionary(object: UIColor.whiteColor(), forKey: NSForegroundColorAttributeName) as [NSObject : AnyObject]
Byron Coetsee

Swift 2 güncellemesinden sonra @ByronCoetsee Aşağıdaki hata var: '[NSObject: AnyObject]' türünde bir değer '[String: AnyObject]?
Jorge Casariego

2
Hızlı 2.0'da çok daha kolayself.navigationController!.navigationBar.titleTextAttributes = [NSForegroundColorAttributeName: UIColor.whiteColor()]
Kevin DiTraglia

24

Soruyu güncel tutmak için Alex RR çözümünü ekleyeceğim , ancak Swift'e :

self.navigationController.navigationBar.barTintColor = .blueColor()
self.navigationController.navigationBar.tintColor = .whiteColor()
self.navigationController.navigationBar.titleTextAttributes = [
    NSForegroundColorAttributeName : UIColor.whiteColor()
]

Hangi sonuçlar:

resim açıklamasını buraya girin


Hmmm, belki Swift 2.0 için işe yaramaz. İki kez kontrol edeyim. Yine de saldırganlığa gerek yok.
Michal

Üzgünüm Michal, bunu bir şaka olarak düşünüyordum! Agresif bir şey olarak değil! Benim için daha çok şuydu: self.navigationController! .NavigationBar.titleTextAttributes = NSDictionary (nesne: UIColor.whiteColor (), forKey: NSForegroundColorAttributeName) [NSObject: AnyObject]
Radu

Aşağıdaki satırı ekleyin: UINavigationBar.appearance (). BarStyle = UIBarStyle.Black Bu satırdan önce: UINavigationBar.appearance (). TintColor = UIColor.whiteColor () tintColor'un çalışması için!
triiiiista

2
Swift 4.0'da: self.navigationController? .NavigationBar.titleTextAttributes = [NSAttributedStringKey.foregroundColor: UIColor.white]
Abhi Muktheeswarar

14

Yöntem 1 , IB'de ayarlayın:

resim açıklamasını buraya girin

Yöntem 2 , bir kod satırı:

navigationController?.navigationBar.barTintColor = UIColor.blackColor()

yöntem 2 çalışmıyor. titleTextAttributesSadece ile çalışır
Vyachaslav Gerchicov

13

Bir sayfadaki rengi değiştirmeye çalışıyorsanız, tewha'nın çözümü iyi çalışıyor, ancak her sayfadaki rengi değiştirebilmek istiyorum. Bir sayfadaki tüm sayfalarda çalışabilmesi için bazı küçük değişiklikler yaptımUINavigationController

NavigationDelegate.h

//This will change the color of the navigation bar
#import <Foundation/Foundation.h>
@interface NavigationDelegate : NSObject<UINavigationControllerDelegate> {
}
@end

NavigationDelegate.m

#import "NavigationDelegate.h"
@implementation NavigationDelegate

- (void)navigationController:(UINavigationController *)navigationController 
      willShowViewController:(UIViewController *)viewController animated:(BOOL)animated{
    CGRect frame = CGRectMake(0, 0, 200, 44);//TODO: Can we get the size of the text?
    UILabel* label = [[[UILabel alloc] initWithFrame:frame] autorelease];
    label.backgroundColor = [UIColor clearColor];
    label.font = [UIFont boldSystemFontOfSize:20.0];
    label.shadowColor = [UIColor colorWithWhite:0.0 alpha:0.5];
    label.textAlignment = UITextAlignmentCenter;
    label.textColor = [UIColor yellowColor];
    //The two lines below are the only ones that have changed
    label.text=viewController.title;
    viewController.navigationItem.titleView = label;
}
@end

13

İOS 5'ten itibaren titleTextAttribute Dictionary (UInavigation denetleyici sınıf referansında önceden tanımlanmış sözlük) kullanarak gezinme çubuğunun başlık metni rengini ve yazı tipini ayarlamamız gerekir.

 [[UINavigationBar appearance] setTitleTextAttributes:
 [NSDictionary dictionaryWithObjectsAndKeys:
  [UIColor blackColor],UITextAttributeTextColor, 
[UIFont fontWithName:@"ArialMT" size:16.0], UITextAttributeFont,nil]];

13

Hızlı Sürüm

Çoğunuzun Objective_C versiyonunun cevaplarını sunduğunu gördüm

Bu işlevi, ihtiyacı olan herkes için Swift kullanarak uygulamak istiyorum.

ViewDidload'da

Navigasyon Çubuğu arka planının renk haline gelmesi için (örneğin: MAVİ)

self.navigationController?.navigationBar.barTintColor = UIColor.blueColor()

Navigasyon Çubuğu arka planının Görüntü haline gelmesi (örneğin: ABC.png)

let barMetrix = UIBarMetrics(rawValue: 0)!

self.navigationController?.navigationBar
      .setBackgroundImage(UIImage(named: "ABC"), forBarMetrics: barMetrix)

Gezinti Çubuğu başlığını değiştirmek için (örneğin: [Yazı Tipi: Futura, 10] [Renk: Kırmızı])

navigationController?.navigationBar.titleTextAttributes = [
            NSForegroundColorAttributeName : UIColor.redColor(),
            NSFontAttributeName : UIFont(name: "Futura", size: 10)!
        ]

(ipucu1: UIFont'tan sonraki "!" işaretini unutmayın)

(ipucu2: başlık metninin birçok özniteliği vardır, "NSFontAttributeName" komutunu tıklatarak sınıfı girebilir ve keyNames'i ve gerekli Nesne türlerini görüntüleyebilirsiniz)

Umarım yardımcı olabilirim!: D


10

Herhangi bir görünüm denetleyicisi viewDidLoad veya viewWillAppear yönteminde aşağıdaki kodu kullanın.

- (void)viewDidLoad
{
    [super viewDidLoad];

    //I am using UIColor yellowColor for an example but you can use whatever color you like   
    self.navigationController.navigationBar.titleTextAttributes = @{NSForegroundColorAttributeName: [UIColor yellowColor]};

    //change the title here to whatever you like
    self.title = @"Home";
    // Do any additional setup after loading the view.
}

9

Kısa ve güzel.

[[[self navigationController] navigationBar] setTitleTextAttributes:@{NSForegroundColorAttributeName: [UIColor redColor]}];

8

Bu benim Stevens'a dayanan çözümüm

Sadece gerçek fark, metin uzunluğuna bağlı olarak, elmanın nasıl yaptığına benziyorsa, konumu ayarlamak için biraz işlem yapmam

UILabel *titleLabel = [[UILabel alloc] initWithFrame:CGRectMake(([self.title length] < 10 ? UITextAlignmentCenter : UITextAlignmentLeft), 0, 480,44)];
titleLabel.backgroundColor = [UIColor clearColor];
titleLabel.font = [UIFont boldSystemFontOfSize: 20.0f];
titleLabel.shadowColor = [UIColor colorWithWhite:0.0 alpha:0.5];
titleLabel.textAlignment = ([self.title length] < 10 ? UITextAlignmentCenter : UITextAlignmentLeft);
titleLabel.textColor = [UIColor redColor];
titleLabel.text = self.title;
self.navigationItem.titleView = titleLabel;
[titleLabel release];

Yazı tipi boyutunuza bağlı olarak 10 değerini ayarlamak isteyebilirsiniz


6

Nav düğmeleriyle metni merkezden dışarı atma (yalnızca bir düğmeniz olduğunda) ile karşılaştım. Bunu düzeltmek için çerçeve boyutumu şöyle değiştirdim:

CGRect frame = CGRectMake(0, 0, [self.title sizeWithFont:[UIFont boldSystemFontOfSize:20.0]].width, 44);

6

NavigationBar'ın arka plan resmini ve sol düğme öğesini özelleştirdim ve gri başlık arka plana uymuyor. Sonra kullanıyorum:

[self.navigationBar setTintColor:[UIColor darkGrayColor]];

renk tonunu gri olarak değiştirmek için. Ve başlık şimdi beyaz! İstediğim şey bu.

Ayrıca yardım umuyoruz :)


Güzel ama bu sadece metni beyaza dönüştürmek için çalışıyor. NavBar'ı [UIColor whiteColor] ile renklendirmek bile metin rengini beyaza dönüştürür.
cschuff

6

Alt gezinme çubuklarını iterken veya sekmelerde başlık gösterirken self.title öğesinin ayarlanması önerilir.

- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil {
    self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil];
    if (self) {
        // create and customize title view
        self.title = NSLocalizedString(@"My Custom Title", @"");
        UILabel *titleLabel = [[UILabel alloc] initWithFrame:CGRectZero];
        titleLabel.text = self.title;
        titleLabel.font = [UIFont boldSystemFontOfSize:16];
        titleLabel.backgroundColor = [UIColor clearColor];
        titleLabel.textColor = [UIColor whiteColor];
        [titleLabel sizeToFit];
        self.navigationItem.titleView = titleLabel;
        [titleLabel release];
    }
}

6

Bu oldukça eski bir konu ama iOS 7 ve üstü için Gezinme Çubuğu Başlığının Renk, Boyut ve Dikey Konumunu ayarlamak için cevap vermeyi düşünüyorum

Renk ve Boyut için

 NSDictionary *titleAttributes =@{
                                NSFontAttributeName :[UIFont fontWithName:@"Helvetica-Bold" size:14.0],
                                NSForegroundColorAttributeName : [UIColor whiteColor]
                                };

Dikey Konum için

[[UINavigationBar appearance] setTitleVerticalPositionAdjustment:-10.0 forBarMetrics:UIBarMetricsDefault];

Başlık Ayarla ve özellikler sözlüğünü atayın

[[self navigationItem] setTitle:@"CLUBHOUSE"];
self.navigationController.navigationBar.titleTextAttributes = titleAttributes;

5

Bu Swift'te benim için çalışıyor:

navigationController?.navigationBar.titleTextAttributes = [NSForegroundColorAttributeName:UIColor.white]

Oldukça yakın ama yolunuz zaten başlıkta mümkün olan tüm özelliklerin üzerine yazacak. Benim durumumda yazı tipi buydu. navigationController?.navigationBar.titleTextAttributes = { if let currentAttributes = navigationController?.navigationBar.titleTextAttributes { var newAttributes = currentAttributes newAttributes[NSForegroundColorAttributeName] = navigationTintColor return newAttributes } else { return [NSForegroundColorAttributeName: navigationTintColor]}}()
Sonuçta

İyi çalışıyor. Obj-C için de aynı şey:self.navigationController.navigationBar.titleTextAttributes = @{NSForegroundColorAttributeName : UIColor.redColor};
Mike Keskinov

5

Swift 4 ve 4.2 sürümü:

 self.navigationController.navigationBar.titleTextAttributes = [NSAttributedString.Key.foregroundColor: UIColor.green]

4
self.navigationItem.title=@"Extras";
[self.navigationController.navigationBar setTitleTextAttributes: [NSDictionary dictionaryWithObjectsAndKeys:[UIFont fontWithName:@"HelveticaNeue" size:21], NSFontAttributeName,[UIColor whiteColor],UITextAttributeTextColor,nil]];

3

yazı tipi boyutunu ayarlamak için aşağıdaki koşulları kullandım .. belki kimseye yararlı

if ([currentTitle length]>24) msize = 10.0f;
    else if ([currentTitle length]>16) msize = 14.0f;
    else if ([currentTitle length]>12) msize = 18.0f;

3

Daha az gürültü için yeni iOS 7 metin özelliklerini ve modern objektif c'yi kullanarak Alex RR'nin yayınına bir güncelleme:

NSShadow *titleShadow = [[NSShadow alloc] init];
titleShadow.shadowColor = [UIColor blackColor];
titleShadow.shadowOffset = CGSizeMake(-1, 0);
NSDictionary *navbarTitleTextAttributes = @{NSForegroundColorAttributeName:[UIColor whiteColor],
                                            NSShadowAttributeName:titleShadow};

[[UINavigationBar appearance] setTitleTextAttributes:navbarTitleTextAttributes];

3

Ben rengini ayarlamak için uygun bir yol olduğuna inanıyorum UINavigationBar:

NSDictionary *attributes=[NSDictionary dictionaryWithObjectsAndKeys:[UIColor redColor],UITextAttributeTextColor, nil];
self.titleTextAttributes = attributes;

Yukarıdaki kod alt sınıf üzerinde yazılmıştır UINavigationBar, açıkçası alt sınıflama olmadan da çalışır.


Doğru, ancak yalnızca iOS 5. İOS 5'in piyasaya sürülmesinden bu yana iyi bir çözüm olması yeterince uzun sürdü. İOS 5 dünyasında olduğumuz için, [UINavigationBar appearance]orada başlık metni niteliklerini kullanabileceğini ve ayarlayabildiğini belirtmek gerekir ( UINavigationBartercih edilen bir çözüm olan alt sınıflamaya dahil olan hileyi göz önünde bulundurarak ).
Ivan Vučica

@stringCode. Yukarıdaki kodu "self.navigationController.navigationBar.titleTextAttributes = attributes;" olmadan başlatabilir misiniz?
Gajendra K Chauhan

3

Yönlendirme desteği için böyle kullanın

UIView *view = [[UIView alloc] initWithFrame:CGRectMake(0,0,320,40)];
[view setBackgroundColor:[UIColor clearColor]];
[view setAutoresizingMask:UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleHeight ];

UILabel *nameLabel = [[UILabel alloc] init];
[nameLabel setFrame:CGRectMake(0, 0, 320, 40)];
[nameLabel setBackgroundColor:[UIColor clearColor]];
[nameLabel setAutoresizingMask:UIViewAutoresizingFlexibleTopMargin | UIViewAutoresizingFlexibleBottomMargin |UIViewAutoresizingFlexibleRightMargin | UIViewAutoresizingFlexibleLeftMargin];
[nameLabel setTextColor:[UIColor whiteColor]];
[nameLabel setFont:[UIFont boldSystemFontOfSize:17]];
[nameLabel setText:titleString];
[nameLabel setTextAlignment:UITextAlignmentCenter];
[view addSubview:nameLabel];
[nameLabel release];
self.navigationItem.titleView = view;
[view release];

2

Bu eksik olan şeylerden biri. En iyi seçeneğiniz, kendi özel Gezinme Çubuğunuzu oluşturmak, bir metin kutusu eklemek ve rengi bu şekilde işlemektir.


Fikrinizi takip ediyorum :) başlık ile oynamaya başlamak için hangi yöntemi geçersiz kılmalıyım? Üzgünüm, ben gerçekten bir n00b :(
Sr.Richie

2

NavBar'da bir düğme eklediğimizde hareket eden etiketin aynı sorunuyla (diğerleri gibi) karşılaştıktan sonra (benim durumumda, tarih yüklendiğinde bir düğmeyle değiştirdiğim bir spinner var), yukarıdaki çözümler işe yaramadı benim için, etiketin her zaman aynı yerde çalışıp sakladığı şey şudur:

- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil

self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil];
if (self)
{
    // this will appear as the title in the navigation bar
    //CGRect frame = CGRectMake(0, 0, [self.title sizeWithFont:[UIFont boldSystemFontOfSize:20.0]].width, 44);
   CGRect frame = CGRectMake(0, 0, 180, 44);
    UILabel *label = [[[UILabel alloc] initWithFrame:frame] autorelease];



    label.backgroundColor = [UIColor clearColor];
    label.font = [UIFont boldSystemFontOfSize:20.0];
    label.shadowColor = [UIColor colorWithWhite:0.0 alpha:0.5];
    label.textAlignment = UITextAlignmentCenter;
    label.textColor = [UIColor yellowColor];
    self.navigationItem.titleView = label;
    label.text = NSLocalizedString(@"Latest Questions", @"");
    [label sizeToFit];
}

return self;

1

[Label sizeToFit] öğesini çağırmalısınız; metni, diğer düğmeler gezinme çubuğunu işgal ettiğinde etiket başlık görünümünde otomatik olarak yeniden konumlandırıldığında garip kaymaları önlemek için ayarladıktan sonra.


1

Bu yöntemi appdelegate dosyasında kullanabilir ve her görünümde kullanabilir

+(UILabel *) navigationTitleLable:(NSString *)title
{
CGRect frame = CGRectMake(0, 0, 165, 44);
UILabel *label = [[[UILabel alloc] initWithFrame:frame] autorelease];
label.backgroundColor = [UIColor clearColor];
label.font = NAVIGATION_TITLE_LABLE_SIZE;
label.shadowColor = [UIColor whiteColor];
label.numberOfLines = 2;
label.lineBreakMode = UILineBreakModeTailTruncation;    
label.textAlignment = UITextAlignmentCenter;
[label setShadowOffset:CGSizeMake(0,1)]; 
label.textColor = [UIColor colorWithRed:51/255.0 green:51/255.0 blue:51/255.0 alpha:1.0];

//label.text = NSLocalizedString(title, @"");

return label;
}

1

titleTextAttributes Çubuğun başlık metni için nitelikleri görüntüler.

@property (anatomik olmayan, kopya) NSDictionary * titleTextAttributes Tartışma NSString UIKit Eklemeleri Başvurusu'nda açıklanan metin öznitelik tuşlarını kullanarak metin öznitelikleri sözlüğündeki başlık için yazı tipi, metin rengi, metin gölge rengi ve metin gölge ofsetini belirleyebilirsiniz.

Kullanılabilirlik iOS 5.0 ve sonraki sürümlerde kullanılabilir. UINavigationBar.h içinde bildirildi

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.