2013-02-09 44 views
5

मेरे पास UITableViewCell में तीन UILabels हैं। यह हो सकता है कि कुछ UILabels खाली हो जाएगा (label.text == @"")ऑटो लेआउट UILabels

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath 
{ 
    static NSString *CellIdentifier = @"EventCell"; 
    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier]; 


     NSString *key = [[keysArray objectAtIndex:indexPath.section] description]; 

     UILabel *nameLabel = (UILabel *)[cell viewWithTag:100]; 
     namelabel.text = @"Label 1"; 

     UILabel *locationLabel = (UILabel *)[cell viewWithTag:101]; 
     location.text = @"Label 2"; 

     UILabel *timeLabel = (UILabel *)[cell viewWithTag:102]; 
     timeLabel.text = @""; 

     return cell; 
} 

मैं सभी गैर खाली UILabels खड़ी सेल में ऑटो-लेआउट का उपयोग कैसे केंद्रित कर सकता है?

यह है कि यह कैसे तीन लेबल

This is how it looks with three labels:

यह कैसे दिखता है जब UILables में से एक खाली

How it looks when one of <code>UILables</code> is empty

है और यह मैं कैसे करना चाहते हैं के साथ दिखता है यह देखने के लिए:

And this is how I want it to look:

+0

क्या आप कोड में या इंटरफ़ेस बिल्डर में सेल बना रहे हैं? यह क्यों मायने रखता है कि लेबल खाली हैं या नहीं? आईबी में – jrturton

+0

। मैं चाहता हूं कि मेरे लेबल कंटेनर में केंद्रित हों। बनाना मुश्किल नहीं है, लेकिन जब लेबल में से एक खाली होता है तो मुझे दो अन्य लेबलों के बीच एक अंतर मिलता है जो अच्छा नहीं दिखता – Oleg

+1

यह बहुत कठिन हो सकता है, क्योंकि एक खाली UILabel शायद चौड़ाई का दावा नहीं करता है लेकिन निश्चित रूप से ऊंचाई, तो आपको लेबल में से किसी एक के रूप में कुछ कोड लिखना पड़ सकता है, उस लेबल को हटाएं '। – 11684

उत्तर

3

यह प्राप्त करने के लिए मुश्किल है, लेकिन एक सरल शॉर्टकट पाठ की तीन लाइनों, सेल की पूरी ऊंचाई को भरने के लिए विवश साथ, बजाय एक ही लेबल के लिए हो सकता है। लेबल तब इसकी सामग्री को लंबवत रूप से स्वतः केंद्रित करेगा।

आपके पास तीन लेबलों की बजाय सेल पर तीन स्ट्रिंग गुण होंगे, और आपके सेटर्स अंतिम स्ट्रिंग का निर्माण करेंगे (नई लाइनों के लिए \n का उपयोग करके) और लेबल का टेक्स्ट सेट करें।

यदि पाठ की प्रत्येक पंक्ति में अलग स्टाइल है, कोई समस्या नहीं है, क्योंकि आप जिम्मेदार तारों का उपयोग कर सकते हैं।

+0

बहुत अच्छा तरीका! जैसा कि आप सुझाव देते हैं। और जिम्मेदार तारों का उपयोग करेगा क्योंकि मेरे लेबल में अलग स्टाइल है! धन्यवाद! – Oleg

+0

असल में मैं सोच रहा था कि कोई प्रोग्राम प्रोग्रामिक रूप से बाधाओं को जोड़ने/संशोधित करने का सुझाव देगा, लेकिन यह समाधान बहुत आसान है! – Oleg

+0

बाधाओं को संशोधित करना संभव है, लेकिन इसे इस तरह से करने से निश्चित रूप से कठिन है। यह आपके स्क्रॉलिंग प्रदर्शन को भी प्रभावित कर सकता है क्योंकि आप या तो उप-दृश्य जोड़ रहे हैं या लेआउट बदल रहे हैं क्योंकि प्रत्येक सेल स्क्रीन पर आता है, जिनमें से दोनों महंगा परिचालन हैं। – jrturton