Pracuję nad aplikacją, w której nagłówek sekcji powinien znajdować się po prawej zamiast domyślnej lewej.Nagłówek sekcji UITableView po prawej zamiast domyślnej po lewej
Szukałem i wielu maniaków zaproponował wdrożenie:
- (UIView *)tableView:(UITableView *)tableView viewForHeaderInSection:(NSInteger)section
{
static UIView *headerView;
if (headerView != nil)
return headerView;
NSString *headerText = NSLocalizedString(@"البحث الأخيرة", nil);
// set the container width to a known value so that we can center a label in it
// it will get resized by the tableview since we set autoresizeflags
float headerWidth = 150.0f;
float padding = 10.0f; // an arbitrary amount to center the label in the container
headerView = [[UIView alloc] initWithFrame:CGRectMake(300, 0.0f, headerWidth, 44.0f)];
headerView.autoresizingMask = UIViewAutoresizingFlexibleWidth;
// create the label centered in the container, then set the appropriate autoresize mask
UILabel *headerLabel = [[UILabel alloc] initWithFrame:CGRectMake(padding, 0, headerWidth - 2.0f * padding, 44.0f)];
headerLabel.autoresizingMask = UIViewAutoresizingFlexibleLeftMargin | UIViewAutoresizingFlexibleRightMargin;
headerLabel.textAlignment = UITextAlignmentRight;
headerLabel.text = headerText;
[headerView addSubview:headerLabel];
return headerView;
}
Jednak gdy próbuję zwiększyć współrzędna x nagłówka ramki widoku, nie ma wpływu na pozycję widoku. I zawsze w środku widoku tabeli.
Potrzebuję nagłówek, aby być po prawej stronie.
Zamiast iść z flexibleWidth, nie można zmusić go do być pełną szerokość? Następnie widok zużyje całą szerokość i uzasadni tekst w prawo. – bryanmac
Już wybrałeś odpowiedź, która jest w większości poprawna, ale dodanie spacji w celu uzyskania marginesu to prawdziwy hack. Właściwym sposobem rozwiązania problemu jest utworzenie pustego widoku (lub jednego z kolorem tła) i użycie go jako widoku nagłówka. Następnie dodajesz UILabel do tego widoku kontenera i przesuwasz go nieco z prawej strony. Ta koncepcja - używanie pustego widoku jako kontenera do umieszczania innych widoków jest powszechnym i użytecznym narzędziem. –
@DavidH masz rację. Pomysł dodawania spacji nie jest dobry. Choć na razie zadziałało to dla mnie.Jak wspomniałem w moim pytaniu, że widok zawsze znajduje się w centrum, w miejscu, w którym potrzebuję go po prawej stronie. Ustawienie ramki nie działa. Etykieta została wyrównana do prawej. Rozumiem, że używanie UIView jest o wiele lepsze, gdy masz więcej opcji dostosowywania. Dziękuję za komentarz! –