2010-02-13 23 views
8

पर कोनेराइडियस के साथ UILabel जोड़ते समय क्रॉल में आता है, मैं अपने टेबल व्यू में प्रत्येक सेल में एक UILabel जोड़ रहा हूं। यह शुरुआत में कोई समस्या नहीं प्रस्तुत करता है। जब मैं layer.cornerRadius का उपयोग करके UILabel के कोनों को गोल करता हूं, तो तालिका दृश्य को स्क्रॉल करना बंद हो जाता है।UITableView प्रत्येक सेल

UILabel *label1 = [[UILabel alloc] initWithFrame:CGRectMake(cell.bounds.origin.x+10 ,5, 30, 30)]; 
label1.backgroundColor = ([[managedObject valueForKey:@"color"] hasPrefix:@"FFFFFF"]) ? [UIColor blackColor] : color; 
label1.layer.cornerRadius = 10.0f; 
[cell addSubview:label1]; 
+0

आप देखना चाहते हैं [कैसे Tweetie यह करता है] (http://blog.atebits.com/2008/12/fast-scrolling-in-tweetie-with-uitableview/) (आसानी से स्क्रॉल करता है)। – icktoofay

उत्तर

7

मैंने अपने आप से पहले यह कोशिश की है और पाया है कि यह किसी भी प्रकार के दृश्य के लिए बेकार है। आपको गोलाकार कोनों के साथ एक छवि बनाना चाहिए और इसके बजाय अपने लेबल की पृष्ठभूमि के रूप में जोड़ना चाहिए।

+0

यह वास्तव में अच्छा समाधान नहीं है क्योंकि विभिन्न आकार के लेबल पर, छवि फैली जाएगी और छवि द्वारा दिया गया कोने त्रिज्या दूसरों से अलग होगा .. –

15

rouned कोनों के साथ एक छवि के लिए कोई जरूरत नहीं है - इस सवाल का fknrdcls द्वारा जवाब देखें:

UILabel layer cornerRadius negatively impacting performance

मूल रूप से, आप बस अपने लेबल एक पारदर्शी पृष्ठभूमि देने के लिए की जरूरत है, और पृष्ठभूमि रंग जोड़ने इसके बजाय परत के लिए। फिर, आप maskToBounds अक्षम कर सकते हैं, जो प्रदर्शन में काफी सुधार करता है। तो अपने कोड हो जाता है:

UILabel *label1 = [[UILabel alloc] initWithFrame:CGRectMake(cell.bounds.origin.x+10 ,5, 30, 30)]; 
label1.backgroundColor = [UIColor clearColor]; 
label1.layer.backgroundColor=[UIColor whiteColor].CGColor; 
label1.layer.cornerRadius = 10.0f; 
label1.layer.masksToBounds = NO; 
label1.layer.shouldRasterize = YES; 
+0

+1 मुझे वास्तव में यह समाधान पसंद है, लेकिन मुझे केवल कुछ कोनों की आवश्यकता है गोल **। मेरा कामकाज है: केवल शीर्ष और निचले दाएं कोनों को 'दिखाने' के लिए, मैं अपने 'frame.origin.x' पर ऋणात्मक मान के साथ एक सबव्यूव जोड़ता हूं और' कोनेरायडियस 'को' परत 'पर असाइन करता हूं। अगर किसी को उस ज़रूरत के लिए बेहतर समाधान मिला, तो मुझे रूचि है। – anneblue

0
एक UIImageView क्योंकि मैं भी एक चित्र काटने के लिए ही नहीं, एक पृष्ठभूमि रंग था UILabel चाल काम नहीं किया के लिए

। मैंने पाया कि सबसे तेज़ समाधान दृश्य के माता-पिता को रास्टराइज करना था जब भी मैंने इसे एनिमेट किया था (मेरे पास एक स्लाइडिंग पैनल है)।

संबंधित मुद्दे