2010-07-19 14 views
5

मैं यूआईटीबल व्यू के पाद लेख में UIButton प्रदर्शित करना चाहता हूं (शीर्षलेख के लिए बिल्कुल वही होना चाहिए)।UITableView tableFooterView अजीब आकार बदलना

इस कोड को मेरी TableViewController की viewDidLoad में है:

UIButton *footerShareButton = [UIButton buttonWithType:UIButtonTypeRoundedRect]; 
[footerShareButton setFrame:CGRectMake(10, 0, 70, 50)]; 
NSLog(@"%f", footerShareButton.frame.size.width); 

[self.tableView setTableFooterView:footerShareButton]; 

NSLog(@"%f", footerShareButton.frame.size.width); 
NSLog(@"%f", self.tableView.tableFooterView.frame.size.width); 

हालांकि, इस कोड काम नहीं करता। बटन की चौड़ाई बहुत बड़ी है, यह 320 है। (ऊंचाई हालांकि सही है।) पहला एनएसएलओजी 70, दूसरा और तीसरा आउटपुट 320 आउटपुट करता है। तो ऐसा लगता है कि setTableFooterView विधि अजीब रूप से बटन का आकार बदलती है।

मैं तालिका पाद लेख के रूप में सेट करने से पहले एक और UIView में UIButton रख कर इस समस्या का समाधान कर दिया है:

UIButton *footerShareButton = [UIButton buttonWithType:UIButtonTypeRoundedRect]; 
[footerShareButton setFrame:CGRectMake(10, 0, 70, 50)]; 

UIView *aView = [[UIView alloc] initWithFrame:CGRectMake(10, 0, 70, 50)]; 
[aView addSubview:footerShareButton]; 

[self.tableView setTableFooterView:aView]; 
[aView release]; 

यह काम करता है, बटन सही चौड़ाई है।

हालांकि, मुझे समझ में नहीं आता कि पहला कोड नमूना क्यों काम नहीं करता है। क्या कोई समझा सकता है?

उत्तर

19

इससे कोई फर्क नहीं पड़ता कि आप UITableView फ़ूटर/हेडर के रूप में जो जोड़ रहे हैं, उसमें कोई चौड़ाई नहीं है - इसकी चौड़ाई हमेशा तालिका की चौड़ाई के समान होगी।

तो, आपके मामले में जो दृश्य आपने जोड़ा है उसे CGRectMake(0, 0, 320, 50) में बदल दिया गया है, लेकिन बटन सही फ्रेम के साथ बना हुआ है। बटन के फ्रेम दृष्टिकोण के अनुसार किया जाता है ...

संपादित:
पाद लेख के/हेडर की सीमा में ही पैरामीटर आप सेट के रूप में यह ऊंचाई है रहता है।

नोटिस कि यदि आप तालिका में जोड़े जाने के बाद हेडर/फ़ूटर व्यू की ऊंचाई बदल देंगे तो इससे कोई बदलाव नहीं आएगा। आपको तालिका में जोड़ने से पहले ऊंचाई निर्धारित करनी चाहिए ...

+2

हाँ, यह है कि यह है, यह देखने के लिए मैं भी बनाया आकार बदलने करता है, मैं सिर्फ नोटिस नहीं किया था। धन्यवाद। मुझे लगता है कि यह दस्तावेज़ों में उल्लिखित होना चाहिए जो तालिका को सेट करते हैं FooterView प्रॉपर्टी दृश्य का आकार बदलती है, जो मुझे कुछ समय बचा लेती। – avf

3

वास्तव में एक तरीका है जिसे मैं इस समस्या से निपटने की कोशिश कर रहा हूं;

एक खाली UIView 320x (अपने बटन की ऊंचाई) बनाएं और फिर इस दृश्य के अंदर केंद्रित बटन रखें। इस तरह दृश्य के अंदर बटन का आकार बदल नहीं आता है।

आशा इस मदद करता है,

जोनाथन

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