2012-10-08 7 views
5

Mam UILabel Czasami chcę wycentrować pionowo w komórce. Trzeba to zrobić programowo. Próbowałem dodając następujące ograniczenia go do centrum (nazwa_położenia jest UILabel):ios 6: Center UILabel w pionie z użyciem ograniczeń automatycznego układu

[cell addConstraint:[NSLayoutConstraint constraintWithItem:cell 
attribute:NSLayoutAttributeCenterY relatedBy:0 toItem:cell.locName 
attribute:NSLayoutAttributeCenterY multiplier:1 constant:0]]; 

Wynika to uzyskać:

enter image description here

To wygląda jak jego centrowania, ale może zmieniając wysokość UILabel czy coś takiego?

Oto kontroler widoku w IB:

enter image description here

Jak mogę osiągnąć pionowe centrowanie programowo?

+0

Dlaczego to musi być zrobione programowo? Dlaczego nie możesz po prostu zaprojektować innej komórki za pomocą IB i sekwestru, niż zamiast tego? – slf

+0

Dzięki! To załatwi sprawę w mojej konkretnej sprawie. Co byś zrobił, gdybyśmy nie mieli do czynienia z komórkami? Powiedzmy, że próbowaliśmy programować etykietę w ogólnym UIView programowo? –

+0

To może nie być najlepszy sposób, ale prawdopodobnie obliczyć wysokość i trochę matematyki, aby dowiedzieć się, co CGRect powinien być z ramy. – slf

Odpowiedz

0

Spróbuj osiągnąć wysokość UIlabel po środku to ???

lub u możesz programowo przypisać położenie etykiety w niestandardowej komórce.

3

Co dalej: Oprócz ograniczenia centrowania dodaj ograniczenie wysokości dla komórki.locName, aby było ono wyższe.

[cell.contentView addConstraint: 
    [NSLayoutConstraint constraintWithItem:cell.locName 
           attribute:NSLayoutAttributeHeight 
           relatedBy:NSLayoutRelationGreaterThanOrEqual 
            toItem:nil 
           attribute:NSLayoutAttributeNotAnAttribute 
           multiplier:1 
            constant:20]]; 
2

Prawdopodobnie uderzasz w inne ograniczenia, które już znajdują się w komórce. Dodanie wiązań nie powoduje, że inne więzy znikają - jeśli na przykład masz odstęp między górną i dolną etykietą, aby to spełnić, a nowe wiązanie centrujące, wysokość górnej etykiety będzie musiała się zmniejszyć.

Być może trzeba będzie wykonać rynki zbytu dla tych innych ograniczeń i usunąć je, aby uzyskać wyśrodkowany projekt.

Powiązane problemy