Πολλαπλές ετικέτες στη γραμμή πλοήγησης

ψήφοι
3

Θα ήθελα να δημιουργήσετε μια άποψη παρόμοια με το «Now Playing» σελίδα για το iPhone και έχει 3 γραμμές κειμένου στη γραμμή πλοήγησης.

Ο μόνος τρόπος που θα μπορούσε να βρει για να γίνει αυτό ήταν:

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

Το πρόβλημα με αυτό είναι ότι πρέπει να τα αφαιρέσετε όταν θέα αλλαγές. Έτσι, σε -viewWillDisappear έχω:

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

Νομίζω ότι ο τρόπος για να γίνει αυτό είναι να κάνει μια προσαρμοσμένη προβολή που έχει τα 3 ετικέτες σε αυτό, και να προσθέσετε αυτό στην προβολή τίτλο. (Εδώ είναι η παγίδα - μπορείτε να προσθέσετε μόνο 1 ετικέτα ή θέα στο σημείο θέα τίτλο στη γραμμή nav)

self.navigationItem.titleView = newViewIMadeWithThreeLabels
Δημοσιεύθηκε 09/12/2008 στις 22:57
πηγή χρήστη
Σε άλλες γλώσσες...                            


7 απαντήσεις

ψήφοι
4

παρακάτω κώδικα UIView λειτουργεί εντάξει για μένα, θα έπρεπε η ίδια ετικέτα ετικέτα που χρησιμοποιείται δύο φορές, θα μπορούσε να συντριβή σας λόγο.

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;
Απαντήθηκε 20/12/2009 στις 22:37
πηγή χρήστη

ψήφοι
2

Θα μπορούσατε να δοκιμάσετε δημιουργώντας ένα UIViewController με τις ετικέτες σας έχουν τοποθετηθεί σωστά, και στη συνέχεια υπόσταση σε αυτό, όπως UIViewControllerSubclass * υπο = [[UIViewControllerSubclass αΐΐοο] init]?

Στο πλαίσιο της υποκατηγορίας UIViewController, θα πρέπει να δημιουργήσει την άποψή σας στην μέθοδο loadView εκπρόσωπο και αποδίδουν την άποψη της κάθε ετικέτας με την άποψη του ελεγκτή άποψη του, όπως [[αυτο άποψη] addSubview: ετικέτα]?

Στη συνέχεια, συνδέστε την άποψή του ως εξής:

self.navigationItem.titleView = sub.view?

Αυτό θα μπορούσε να λειτουργήσει.

Απαντήθηκε 09/12/2008 στις 23:10
πηγή χρήστη

ψήφοι
1

Σήμερα ήμουν έτοιμος μέσα από το ίδιο πρόβλημα και το έκανα με αυτόν τον τρόπο.

  1. Δημιούργησα ένα UIView μέγεθος 320 * 44 στην τοποθεσία 0,0 - μπορείτε να έχετε ένα διαφορετικό μέγεθος άποψη με βάση τις ανάγκες σας.

  2. Δημιουργήστε μια IBOutlet για τη συγκεκριμένη προσαρμοσμένη προβολή που ονομάζεται navigationBarTitleView - κάνουν τις απαραίτητες συνδέσεις με την άποψή σας

  3. Προσθήκη δευτερεύουσας προβολής στο navgiationBar με τον ακόλουθο κώδικα μέσα στο εσωτερικό viewWillAppear: Ή viewDidAppear:

    [[[Self navigationController] navigationBar] addSubview: navigationBarTitleView]?

  4. Όταν πατήσετε αυτό το θέα στο navigationcontroller, αφαιρέστε το navigationBarTitleView από την superview.

    [NavigationBarTitleView removeFromSuperview]?

Απαντήθηκε 23/10/2010 στις 22:29
πηγή χρήστη

ψήφοι
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];
Απαντήθηκε 14/05/2010 στις 13:13
πηγή χρήστη

ψήφοι
1

αργότερα την πρότασή σας στο αξίωμα είναι σωστή. Δημιουργήστε ένα UIView που περιέχει 3 ετικέτες σας και να το θέσει ως titleView. Παρακαλώ μην επιχειρήσετε να προσθέσετε subviews απευθείας στο UINavigationBar.

Απαντήθηκε 10/12/2008 στις 15:34
πηγή χρήστη

ψήφοι
0

Μια πιο τακτοποιημένο τρόπος είναι απλά να enumετικέτα σας:

enum {
  SONG_TAG,
  ALBUM_TAG,
  ARTIST_TAG
};

Ο κωδικός σας θα πρέπει να λειτουργήσει στη συνέχεια.

Απαντήθηκε 25/09/2010 στις 19:07
πηγή χρήστη

ψήφοι
0

Προσπάθησα προσθέτοντας ένα ολόκληρο θέα .. Ωστόσο, η εφαρμογή διατηρείται συντρίβοντας κάθε φορά που προστίθεται ένα δευτερεύουσας προβολής (όπως μια ετικέτα) για να το πληρεξούσιο loadView. Δεν είμαι όλο αυτό το μεγάλο σε debugging πλήρη κολλάει, έτσι βρήκα χρησιμοποιώντας ένα κουμπί ήταν πολύ πιο απλό. Δεν έχω βρει οποιαδήποτε πλευρά επηρεάζει ακόμα ...

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;
Απαντήθηκε 15/12/2008 στις 23:46
πηγή χρήστη

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