Navigasyon çubuğunda Çoklu etiketler

oy
3

Ben Navigasyon çubuğunda metin 3 satır iPhone'da Now Playing sayfasına benzer bir görünüm oluşturmak ve istiyorum.

tek yolu bu idi yapmak bulabiliriz:

UINavigationBar *bar = [self.navigationController navigationBar];   
label = [[UILabel alloc] initWithFrame:CGRectMake(60, 2, 200, 14)];
label.tag = SONG_TAG;
label.backgroundColor = [UIColor clearColor];
label.font = [UIFont boldSystemFontOfSize:14];
label.adjustsFontSizeToFitWidth = NO;
label.textAlignment = UITextAlignmentCenter;
label.textColor = [UIColor whiteColor];
label.highlightedTextColor = [UIColor blackColor];
[bar addSubview:label];
[label release];

//Create album label
label = [[UILabel alloc] initWithFrame:CGRectMake(60, 17, 200, 12)];
label.tag = ALBUM_TAG;
label.backgroundColor = [UIColor clearColor];
label.font = [UIFont systemFontOfSize:12];
label.adjustsFontSizeToFitWidth = NO;
label.textAlignment = UITextAlignmentCenter;
label.highlightedTextColor = [UIColor blackColor];
label.textColor = HEXCOLOR(0xA5A5A5ff);
[bar addSubview:label];
[label release];

//Create artist label
label = [[UILabel alloc] initWithFrame:CGRectMake(60, 30, 200, 12)];
label.tag = ARTIST_TAG;
label.backgroundColor = [UIColor clearColor];
label.font = [UIFont systemFontOfSize:12];
label.adjustsFontSizeToFitWidth = NO;
label.textAlignment = UITextAlignmentCenter;
label.highlightedTextColor = [UIColor blackColor];
label.textColor = HEXCOLOR(0xA5A5A5ff);
[bar addSubview:label];
[label release];

Bu sorun ne zaman görünümü değişiklikleri bunları kaldırmak zorunda olduğunu. Yani, -viewWillDisappear I var:

UILabel *label;
label = (UILabel *)[self.navigationController.navigationBar viewWithTag:SONG_TAG];
[label removeFromSuperview];
label = (UILabel *)[self.navigationController.navigationBar viewWithTag:ALBUM_TAG];
[label removeFromSuperview];
label = (UILabel *)[self.navigationController.navigationBar viewWithTag:ARTIST_TAG];
[label removeFromSuperview];

Bunu yapmanın yolu içinde 3 etiketleri olan bir özel görünüm yapmak ve başlık görünümüne bu eklemek olduğunu düşünüyorum. (Catch - sadece gezinme çubuğunda başlık görünümü noktaya 1 etiket veya görünümü ekleyebilirsiniz)

self.navigationItem.titleView = newViewIMadeWithThreeLabels
Oluştur 09/12/2008 saat 22:57
kaynak kullanıcı
Diğer dillerde...                            


7 cevaplar

oy
4

UIView kod aşağıda benim için Tamam çalışan, aynı etiket etiketi, iki kere kullandığınız kazasında nedeni olabilirdi vardı.

UIView *btn = [[UIView alloc] initWithFrame:CGRectMake(0, 0, 320, 60)];

UILabel *label;
label = [[UILabel alloc] initWithFrame:CGRectMake(0, 10, 200, 16)];
label.tag = 1;
label.backgroundColor = [UIColor clearColor];
label.font = [UIFont boldSystemFontOfSize:16];
label.adjustsFontSizeToFitWidth = NO;
label.textAlignment = UITextAlignmentCenter;
label.textColor = [UIColor blackColor];
label.text = @"first line";
label.highlightedTextColor = [UIColor blackColor];
[btn addSubview:label];
[label release];

label = [[UILabel alloc] initWithFrame:CGRectMake(0, 30, 200, 16)];
label.tag = 2;
label.backgroundColor = [UIColor clearColor];
label.font = [UIFont boldSystemFontOfSize:16];
label.adjustsFontSizeToFitWidth = NO;
label.textAlignment = UITextAlignmentCenter;
label.textColor = [UIColor blackColor];
label.text = @"second line";
label.highlightedTextColor = [UIColor blackColor];
[btn addSubview:label];
[label release];

self.navigationItem.titleView = btn;
Cevap 20/12/2009 saat 22:37
kaynak kullanıcı

oy
2

Sen UIViewControllerSubclass * alt = [[UIViewControllerSubclass alloc] init] gibi örnekleriz sonra etiketle bir UIViewController doğru konumlandırılmış oluşturmayı deneyin ve olabilir;

UIViewController alt sınıf içinde, loadView temsilci yönteminde görünümünüzü oluşturmak ve benzeri görünüm kontrolörün görünümüne her etiketin görünümünü eklemek gerekir [[öz görünüm] addSubview: etiket];

Sonra böyle görüşünü takmak:

self.navigationItem.titleView = sub.view;

İşe yarayabilir.

Cevap 09/12/2008 saat 23:10
kaynak kullanıcı

oy
1

Bugün ben aynı sorun üzerinde gidiyordu ve ben bu şekilde yaptım.

  1. Ben bir yerde 0,0 boyuta 320 * 44 bir UIView yarattı - Eğer ihtiyacı dayalı farklı bir görünüm boyutuna sahip olabilir.

  2. navigationBarTitleView adında konusu özel görünüm için bir IBOutlet oluşturma - görünümü ile gerekli bağlantıları yapmak

  3. YA viewDidAppear: Aşağıdaki içindeki kod viewWillAppear içeride ile navgiationBar için subview ekleyin:

    [[[Kendini NavigationController] NavigationBar] addSubview: navigationBarTitleView];

  4. Eğer NavigationController bu görünümü bastığı zaman, Superview gelen navigationBarTitleView kaldırın.

    [NavigationBarTitleView removeFromSuperview];

Cevap 23/10/2010 saat 22:29
kaynak kullanıcı

oy
1
UINavigationBar *bar = [self.navigationController navigationBar];
CGFloat navBarHeight = 70.0f;    
CGRect frame = CGRectMake(0.0f, 0.0f, 320.0f, navBarHeight);
[bar setFrame:frame];
UILabel *label;
label = [[UILabel alloc] initWithFrame:CGRectMake(0, 10, 320, 10)];
label.tag = 1;
label.backgroundColor = [UIColor clearColor];
label.font = [UIFont boldSystemFontOfSize:12];
label.adjustsFontSizeToFitWidth = NO;
label.textAlignment = UITextAlignmentCenter;
label.textColor = [UIColor blackColor];
label.text = @"Set the details for this event.";
label.highlightedTextColor = [UIColor blackColor];
[bar addSubview:label];
[label release];
[bar release];
Cevap 14/05/2010 saat 13:13
kaynak kullanıcı

oy
1

yayınında sonraki öneri doğrudur. senin 3 etiketleri içerir ve titleView olarak ayarlamak bir UIView oluşturun. UINavigationBar doğrudan subviews ekleme girişiminde DEĞİL etmeyin.

Cevap 10/12/2008 saat 15:34
kaynak kullanıcı

oy
0

Bir daha düzgün bir yol sadece etmektir enumEtiketinizle:

enum {
  SONG_TAG,
  ALBUM_TAG,
  ARTIST_TAG
};

Kodunuz sonra çalışması gerekir.

Cevap 25/09/2010 saat 19:07
kaynak kullanıcı

oy
0

Ben (bir etiket gibi) subview eklendi zaman ancak, uygulama loadView temsilci kendisine çökmesini tuttu .. bütün bir görünüm ekleyerek çalıştı. Bütün komple çöküyor ayıklama de büyük değilim, bu yüzden bir düğme çok daha basitti kullanarak bulundu. Ben herhangi bir yan henüz etkiler bulamadık ...

UIButton *btn = [UIButton buttonWithType:UIButtonTypeRoundedRect];
btn.frame = CGRectMake(0, 0, 320, 60);

UILabel *label;
label = [[UILabel alloc] initWithFrame:CGRectMake(0, 10, 200, 16)];
label.tag = SONG_TAG;
label.backgroundColor = [UIColor clearColor];
label.font = [UIFont boldSystemFontOfSize:16];
label.adjustsFontSizeToFitWidth = NO;
label.textAlignment = UITextAlignmentCenter;
label.textColor = [UIColor blackColor];
label.text = @"first line";
label.highlightedTextColor = [UIColor blackColor];
[btn addSubview:label];
[label release];

label = [[UILabel alloc] initWithFrame:CGRectMake(0, 30, 200, 16)];
label.tag = SONG_TAG;
label.backgroundColor = [UIColor clearColor];
label.font = [UIFont boldSystemFontOfSize:16];
label.adjustsFontSizeToFitWidth = NO;
label.textAlignment = UITextAlignmentCenter;
label.textColor = [UIColor blackColor];
label.text = @"second line";
label.highlightedTextColor = [UIColor blackColor];
[btn addSubview:label];
[label release];

self.navigationItem.titleView = btn;
Cevap 15/12/2008 saat 23:46
kaynak kullanıcı

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more