दिलचस्प पोस्ट
सकारात्मक पूर्णांक में गैर शून्य बिट्स की गणना करने का फास्ट रास्ता कोणीय निर्देशों में पुनरावृत्ति ईएफ 4.1 कोड-प्रथम: शामिल और / या चुनें तरीकों का उपयोग करते समय नेवीगेशन गुण कैसे ऑर्डर करें? हाइलाइट त्रुटि सेल या इनपुट जब सत्यापन jqgrid में विफल हो जाता है CodeIgniter 2.0 के साथ एकाधिक फाइल अपलोड (अर्रे) कैसे nginx के कैश को साफ करने के लिए? इकाई फ़्रेमवर्क के साथ कैस्केडिंग हटाना – ईएफ द्वारा हटाए गए संबंधित संस्थाएं जावास्क्रिप्ट के साथ लंबी तार को छोटा करने का स्मार्ट तरीका एक ही कुंजी के साथ कई नियमों को मर्ज करने के लिए कैसे? ड्यूप्लिकेट कीज़ के साथ डेटा। टीटीज़ में शामिल होने पर कब की अनुमति हो सकती है? मोज़िला, क्रोम और IE के लिए विशिष्ट सीएसएस कैसे लिखें एक एकल को एक int में परिवर्तित कैसे करें किसी दूसरे वर्ग से प्रवेश फार्म घटक UITableViewCell से UITableView कैसे प्राप्त करें? एकाधिक ईवेंट हैंडलर के साथ एक चयनकर्ता के साथ JQuery .on () विधि

मेरे UITableView के शीर्ष पर यूट्यूब में स्टाइल UITableViewStyleGrouped के साथ क्यों अतिरिक्त पैडिंग है

IOS7 में शुरू हो रहा है, मेरे UITableView के शीर्ष पर एक अतिरिक्त जगह है जिसमें एक स्टाइल UITableViewStyleGrouped

यहाँ एक उदाहरण है:

यहां छवि विवरण दर्ज करें

तालिकाव्यू प्रारंभिक तीर से शुरू होता है, वहां 35 पिक्सेल अस्पष्टीकृत पैडिंग होता है, फिर हरे रंग का हेडर एक UIView viewForHeaderInSection (जहां अनुभाग 0 है) द्वारा लौटा है।

क्या कोई यह समझा सकता है कि 35 पिक्सेल की राशि कहाँ से आ रही है और मैं इसे कैसे हटा सकता हूं, बिना UITableViewStylePlain जा रहा हूं?

वेब के समाधान से एकत्रित समाधान "मेरे UITableView के शीर्ष पर यूट्यूब में स्टाइल UITableViewStyleGrouped के साथ क्यों अतिरिक्त पैडिंग है"

मुझे निम्नलिखित में मदद मिली:

YouStoryboard.storyboard> YouViewController> विशेषताएं निरीक्षक> अनचेक – स्क्रॉल दृश्य एडसेट समायोजित करें

यहां छवि विवरण दर्ज करें

मैंने इसे थोड़ा और अधिक के साथ खेला और ऐसा लगता है कि tableHeaderView = nil को सेट करने का एक साइड-प्रभाव होता tableHeaderView = nil

क्योंकि मेरी tableHeaderView में एक गतिशील रूप से दिखाई देने वाली tableHeaderView , जब मुझे tableHeaderView को छिपाने की आवश्यकता tableHeaderView , बजाय tableHeaderView self.tableView.tableHeaderView = nil; , मैं करता हूँ:

 self.tableView.tableHeaderView = [[UIView alloc] initWithFrame:CGRectMake(0.0f, 0.0f, self.tableView.bounds.size.width, 0.01f)]; 

मुझे यह समाधान कुछ हद तक मनमाने ढंग से सामग्री contentInset.top सेट करने से बेहतर लगता है क्योंकि मैं सामग्री contentInset.top को भी गतिशील रूप से उपयोग करता contentInset.top । जब भी मैं सामग्री की पुन: परिकलित contentInset.top हूं, एक अतिरिक्त 35px को निकालना याद रखना।

आईओएस 7 के लिए यदि आप दृश्य व्यूअर में एक टेबलव्यू को आवंटित कर रहे हैं तो आप इसमें देख सकते हैं

 self.edgesForExtendedLayout = UIRectEdgeNone; 

आपकी समस्या मेरा समान लगती है

अद्यतन करें:

आईओएस 9.x में स्विफ्ट:

 self.edgesForExtendedLayout = UIRectEdge.None 

स्विफ्ट 3:

 self.edgesForExtendedLayout = UIRectEdge.init(rawValue: 0) 

UIScrollView से UITableView विरासत में मिली सामग्री contentInset संपत्ति को बदलने का प्रयास करें

 self.tableView.contentInset = UIEdgeInsetsMake(-36, 0, 0, 0); 

यह एक वैकल्पिक हल है, लेकिन यह काम करता है

 self.automaticallyAdjustsScrollViewInsets = NO; 

कोशिश करो, आप इससे निपट सकते हैं!

आप यह पता लगा सकते हैं कि आपका ऐप आईओएस 7 या उससे भी ज्यादा समय पर चल रहा है या नहीं, और अपने तालिका दृश्य प्रतिनिधियों (आमतौर पर आपके UIViewController कोड में)

 -(CGFloat)tableView:(UITableView *)tableView heightForHeaderInSection:(NSInteger)section { return CGFLOAT_MIN; } -(CGFloat)tableView:(UITableView *)tableView heightForFooterInSection:(NSInteger)section { return CGFLOAT_MIN; } 

यह शायद एक शानदार समाधान नहीं है लेकिन मेरे लिए काम करता है

अनचेक करें "स्क्रॉल दृश्य इनसेट समायोजित करें"

यहां छवि विवरण दर्ज करें

मुझे अपने मूल बग के कारण मिले हैं और एक नमूना प्रोजेक्ट का प्रदर्शन किया है। मेरा मानना ​​है कि एक iOS7 बग है

IOS7 के रूप में, यदि आप समूहित शैली के साथ एक UITableView बनाते हैं, लेकिन पहले लेआउट पर एक प्रतिनिधि सेट नहीं है, तो आप एक प्रतिनिधि सेट और पुनः लोड डेटा कॉल करते हैं, शीर्ष पर एक 35px स्थान होगा जो कभी भी नहीं चलेगा

इस परियोजना को मैंने बग का प्रदर्शन किया था: https://github.com/esilverberg/TableViewDelayedDelegateBug

विशेष रूप से यह फ़ाइल: https://github.com/esilverberg/TableViewDelayedDelegateBug/blob/master/TableViewDelayedDelegateBug/ViewController.m

यदि रेखा 24 सक्रिय है,

 [self performSelector:@selector(updateDelegate) withObject:nil afterDelay:0.0]; 

शीर्ष पर एक अतिरिक्त 35 पिक्सल स्पेस होगा। यदि रेखा 27 सक्रिय है और 24 को टिप्पणी की जाती है,

 self.tableView.delegate = self; 

शीर्ष पर कोई जगह नहीं है यह तालिका की तरह है, दृश्य किसी नतीजे को कैशिंग कर रहा है और प्रतिनिधि को सेट करने के बाद खुद को दोबारा न छानने और पुनः लोड करने के लिए डेटा कहते हैं।

एक और त्वरित टिप्पणी … यहां तक ​​कि XCode 6.1 में भी, UIScrollViews , UITextViews और UITableViews के ऊपरी भाग में लंबवत रिक्त स्थान के साथ एक बग है।

यहां छवि विवरण दर्ज करें

कभी-कभी, इस मुद्दे को ठीक करने का एकमात्र तरीका स्टोरीबोर्ड में जाने और समस्या नियंत्रण को खींचने के लिए है, इसलिए यह पेज पर पहले सबव्यूवेशन नहीं है।

यहां छवि विवरण दर्ज करें

(इस दिशा में मुझे इंगित करने के लिए ओडेड के लिए मेरा धन्यवाद … मैं इस टिप्पणी को पोस्ट कर रहा हूं, बस कुछ स्क्रीनशॉट जोड़ने के लिए, लक्षणों को प्रदर्शित करने और ठीक करने के लिए।)

ऐप्पल द्वारा आईओएस 7 के लिए इस ट्रांज़िशन गाइड के अनुसार, स्क्रॉल व्यू के कंटेंट इनसेट्स को स्वचालित रूप से समायोजित किया जाता है। स्वचालित रूप से समायोजित करेंक्रॉलव्यूआईएनसेट्स का डिफ़ॉल्ट मान हाँ पर सेट है

UIViewController जो UITableView है इस संपत्ति को NO करने के लिए सेट करना चाहिए।

 self.automaticallyAdjustsScrollViewInsets = NO; 

यह चाल करेंगे

1 संपादित करें:

इसके अलावा, कोई भी कोशिश कर सकता है –

 self.navigationController.navigationBar.translucent = YES; 

यह शीर्ष पर अतिरिक्त पैडिंग को भी निकालता है।

समूहीकृत तालिकादृश्य का उपयोग करते हुए इसे देखने के लिए सीमावर्ती कटौती से बचने के लिए इसका उपयोग करेंडलएपियर

 self.tableView.contentInset = UIEdgeInsetsMake(-35, 0, 0, 0); 

स्टोरीबोर्ड:

बस अनचेक करें: दृश्य नियंत्रक के विकल्पों में Adjust Scroll View Insets को Adjust Scroll View Insets करें

यहां छवि विवरण दर्ज करें

कोड:

 self.automaticallyAdjustsScrollViewInsets = false 

ऊपर दिए गए पिछले उत्तर में बहुत सारे हैंक्कर हैं I अगर भविष्य में एप्पल इस अप्रत्याशित व्यवहार को ठीक करने का फैसला करता है तो वे भविष्य में कभी भी तोड़ सकते हैं

समस्या की जड़:

  1. एक UITableView को 0.0 की ऊँचाई के साथ एक हैडर पसंद नहीं है। यदि आप ऐसा करने की कोशिश कर रहे हैं, तो 0 की ऊँचाई वाले शीर्षलेख होना चाहिए, तो आप समाधान के लिए कूद सकते हैं।

  2. भले ही बाद में आप अपने हेडर में एक गैर 0.0 ऊंचाई निर्दिष्ट करते हैं, एक UITableView को 0.0 की ऊँचाई के साथ शीर्ष पर असाइन किया जाना पसंद नहीं करता।

उपाय:

फिर, सबसे सरल और विश्वसनीय तय यह है कि यह सुनिश्चित करना कि आपकी शीर्षक की ऊंचाई 0 नहीं है, जब आप इसे अपने टेबल व्यू में देते हैं।

ऐसा कुछ काम करेगा:

 // Replace UIView with whatever class you're using as your header below: UIView *tableViewHeaderView = [[UIView alloc] initWithFrame:CGRectMake(0.0, 0.0, self.tableView.bounds.size.width, CGFLOAT_MIN)]; self.tableView.tableHeaderView = tableViewHeaderView; 

ऐसा कुछ इस मुद्दे को कुछ बिंदु पर ले जाएगा (आमतौर पर, एक स्क्रॉल के बाद):

 // Replace UIView with whatever class you're using as your header below: UIView *tableViewHeaderView = [[UIView alloc] initWithFrame:CGRectZero]; self.tableView.tableHeaderView = tableViewHeaderView; 

मेरे मामले में यह मेरी मदद करता था मैं भी ios6 का समर्थन कर रहा हूँ

 if ([[[UIDevice currentDevice] systemVersion] floatValue] >= 7) { self.edgesForExtendedLayout = UIRectEdgeNone; self.extendedLayoutIncludesOpaqueBars = NO; self.automaticallyAdjustsScrollViewInsets = NO; } 

बस अपने दृष्टिकोण में निम्नलिखित को अपने वीसी में डाइडलोड करें:

 self.automaticallyAdjustsScrollViewInsets = NO; 

स्विफ्ट: आईओएस मुझे स्क्रॉल व्यू पर टेबलाइव था .. जब मैं एक ही स्क्रीन पर "बैक" पर क्लिक करता था। स्क्रोल दृश्य शीर्ष पर अधिक स्थान ले लेता है .. इसको हल करने के लिए मैंने इसका उपयोग किया है:

  self.automaticallyAdjustsScrollViewInsets = false 

बूलियन मान जो इंगित करता है कि दृश्य नियंत्रक को अपने स्क्रॉल व्यू इनसेट को समायोजित करना चाहिए। डिफ़ॉल्ट मान सही है, जो कि दृश्य नियंत्रक को स्टेटस बार, नेविगेशन बार, और टूलबार या टैब बार द्वारा खपत स्क्रीन क्षेत्रों के जवाब में अपनी स्क्रॉल व्यू इनसेट को समायोजित करने की अनुमति देता है। अगर आप स्क्रॉल व्यू को इनसेट एडजस्टमेंट से प्रबंधित करना चाहते हैं, जैसे कि दृश्य पदानुक्रम में एक से अधिक स्क्रॉल व्यू के साथ, तो झूठी को सेट करें।

मेरा जवाब अधिक सामान्य जवाब होने जा रहा है, लेकिन इसके साथ ही इस पर भी लागू किया जा सकता है।

यदि मूल दृश्य ( ViewController के ) या मूल दृश्य के पहले बच्चे (उपदृश्य) UIScrollView (या UIScrollView स्वयं) का उपवर्ग है, और यदि

 self.navigationController.navigationBar.translucent = YES; 

फ्रेमवर्क स्वचालित रूप से पूर्व-गणना वाली सामग्री Inset सेट कर देगा


इससे बचने के लिए आप ऐसा कर सकते हैं

 self.automaticallyAdjustsScrollViewInsets = NO; 

लेकिन मेरे मामले में मैं ऐसा करने में सक्षम नहीं था, क्योंकि मैं एसडीके को कार्यान्वित कर रहा था जिसमें यूआईवीइयू घटक है जो अन्य डेवलपर्स द्वारा इस्तेमाल किया जा सकता है। उस UIView घटक में UIWebView (जो पहले सबव्यू के रूप में UIScrollView है) है यदि उस घटक को UIViewController के दृश्य पदानुक्रम में पहले बच्चे के रूप में जोड़ा गया है, तो सिस्टम द्वारा स्वचालित इनसेट लागू किया जाएगा।

मैंने UIWebView जोड़ने से पहले फ्रेम (0,0,0,0,0) के साथ डमी दृश्य जोड़कर इसे तय किया है।

इस मामले में प्रणाली को यूआईएसक्रोलएव्यू के उप-वर्ग को पहली उपदृश्य के रूप में नहीं मिला था और इनसेट को लागू नहीं किया था

@ ऑरेलियन पोर्ट द्वारा जवाब के लिए धन्यवाद यहाँ मेरा समाधान है

इस मुद्दे का कारण: –

  1. एक UITableView को 0.0 की ऊँचाई के साथ एक हैडर पसंद नहीं है। यदि आप ऐसा करने की कोशिश कर रहे हैं, तो 0 की ऊँचाई वाले शीर्षलेख होना चाहिए, तो आप समाधान के लिए कूद सकते हैं।
  2. भले ही बाद में आप अपने हेडर में एक गैर 0.0 ऊंचाई निर्दिष्ट करते हैं, एक UITableView को 0.0 की ऊँचाई के साथ शीर्ष पर असाइन किया जाना पसंद नहीं करता।

ViewDidLoad में: –

 self.edgesForExtendedLayout = UIRectEdge.None self.automaticallyAdjustsScrollViewInsets = false 

ऐसा कुछ करने की आवश्यकता नहीं है: –

 self.myTableview.contentInset = UIEdgeInsetsMake(-56, 0, 0, 0) 

heightForHeaderInSection में heightForHeaderInSection प्रतिनिधि: –

 if section == 0 { return 1 } else { return 40; // your other headers height value } 

viewForHeaderInSection प्रतिनिधि में: –

 if section == 0 { // Note CGFloat.min for swift // For Objective-c CGFLOAT_MIN let headerView = UIView.init(frame: CGRectMake(0.0, 0.0, self.myShaadiTableview.bounds.size.width, CGFloat.min)) return headerView } else { // Construct your other headers here } 

इसलिए मैं यहाँ हर विधि की कोशिश कर रहा था, और इस बार उनमें से कोई भी मदद नहीं करता मेरा मामला आईओएस 9 पर समूहीकृत तालिका दृश्य था। मुझे सच में पता नहीं है कि कम से कम 0.01 ऊँचाई के साथ एक tableViewHeader साथ टेबल tableViewHeader सेट करना मेरे लिए क्यों और कैसे पता चला है, लेकिन मेरे लिए। CGRectZero मदद नहीं की, वास्तव में कुछ भी मदद नहीं की:

 tableView.tableHeaderView = UIView(frame: CGRect(x: 0.0, y: 0.0, width: 0.0, height: 0.01)) 

यह स्विफ्ट 3 के उपयोग के लिए IOS 10 का समाधान है:

आप UITableViewDelegate से निम्न विधियों को लागू करके ऊपर और नीचे पैडिंग से छुटकारा पा सकते हैं।

  func tableView( _ tableView: UITableView, heightForHeaderInSection section: Int ) -> CGFloat { return CGFloat.leastNormalMagnitude } func tableView(_ tableView: UITableView, heightForFooterInSection section: Int) -> CGFloat { return CGFloat.leastNormalMagnitude } 

मैं मान रहा हूं कि यह सिर्फ नए UITableViewStyleGrouped स्टाइल का हिस्सा है। यह सभी समूहीकृत तालिका दृश्यों में है और उस स्थान को नियंत्रित करने के लिए कोई प्रत्यक्ष रूप नहीं लगता है।

यदि उस स्थान को एक UIView द्वारा प्रदर्शित किया जा रहा है, तो उस विशिष्ट दृश्य को खोजने के लिए और इसे सीधे संपादित करने के लिए UITableView सभी उप- UIView खोज करना संभव होगा। हालांकि, यह भी संभावना है कि हेडर और कोशिकाएं शुरू होने से पहले यह स्थान केवल एक हार्डकोड ऑफसेट है और इसे संपादित करने का कोई तरीका नहीं होगा।

सभी सबव्यूज़ों के माध्यम से खोज करने के लिए (मैं इस कोड को तब चलाऊंगा जब तालिका में कोई कोशिका नहीं है, तो इसे आउटपुट पढ़ने में थोड़ा आसान होता है):

 - (void)listSubviewsOfView:(UIView *)view { // Get the subviews of the view NSArray *subviews = [view subviews]; // Return if there are no subviews if ([subviews count] == 0) return; for (UIView *subview in subviews) { NSLog(@"%@", subview); // List the subviews of subview [self listSubviewsOfView:subview]; } } 

मुझे एरियलिज़ के रूप में भी ठीक करना था एक बार जब मैं यूआईटीबल दृश्य को पैरेंट दृश्य के पहले सबव्यू नहीं लेता, तो वह चले गए। मेरी जगह 20 पिक्सल थी, 35 नहीं

मैं इसे एक चित्र xib, केवल एक लैंडस्केप xib में फिर से बनाने में सक्षम नहीं था। अगर मैं एक साधारण डेमो ऐप में इसे पुन: पेश कर सकता हूं तो मैं एक रडार बग दर्ज करूँगा।

मुझे लगता है कि UIEdgeInsets- 35 0 0 0 थकाऊ है मेरे मामले में, मैंने टेबलव्यू लागू किया है: heightForHeaderInSection: विधि और इसमें 0 की वापसी की क्षमता है।

जब मैंने 0 से 0.1 एफ बदल दिया, तो समस्या सिर्फ चली गई।

इस एक का उपयोग मुझे लगता है कि यह मदद …

  - (CGFloat)tableView:(UITableView *)tableView heightForHeaderInSection:(NSInteger)section { return 0.005f;// set this according to that you want... } 
 override func viewWillAppear(animated: Bool) { self.edgesForExtendedLayout = UIRectEdge.None // OR self.sampleTableView.contentInset = UIEdgeInsetsMake(-64, 0, 0, 0); //OR self.automaticallyAdjustsScrollViewInsets = false } 
 -(CGFloat)tableView:(UITableView *)tableView heightForHeaderInSection:(NSInteger)section{ return CGFLOAT_MIN; } 

बस आज के लिए इतना ही!

मैं इस एक के खिलाफ मेरे सिर के रूप में अच्छी तरह से पीटने गया है यह सुनिश्चित है कि यह एक iOS7 बग है आखिरकार, किसने मेरी मदद की, यह xib में विचारों का क्रम है। मेरे पास एक दृश्य था जिसमें तालिका दृश्य सही ढंग से प्रदर्शित किया गया था, और दूसरा जिसमें तालिका दृश्य में अतिरिक्त 35px स्थान था। उसके बाद के बीच (यूआईटीबलविय वार) सिर्फ इतना ही अंतर है कि खराब प्रदर्शन में यूआईटेबलव्यू पहला बच्चा था, जबकि उस दृश्य में जो सही तरीके से प्रदर्शित हो रहा था, वह दूसरा था।

यही मेरे लिए चाल थी, बस विचारों के क्रम को बदल रहा है मैं वास्तव में एक वैकल्पिक हल के लिए कोड की अतिरिक्त पंक्तियाँ नहीं जोड़ना चाहता हूं …

इसके लिए हमारे पास कई उत्तर हैं

1) आप यूडीएमएजिएव विडियो में लोड कर सकते हैं

 UIImageView * imbBackground = [UIImageView new]; [self.view addSubview:imbBackground]; 

2) आप हेडर और पाद लेख ऊंचाई 0.1 सेट कर सकते हैं

 - (CGFloat)tableView:(UITableView *)tableView heightForFooterInSection:(NSInteger)section { return 0.1; } - (CGFloat)tableView:(UITableView *)tableView heightForHeaderInSection:(NSInteger)section{ return 0.1; } 

3) आप ऊँचाई 0.1 के साथ शीर्ष लेख और पाद लेख दृश्य जोड़ सकते हैं

 tblCampaigns.tableHeaderView = [[UIView alloc] initWithFrame:CGRectMake(0.0f, 0.0f, tblCampaigns.bounds.size.width, 0.01f)]; tblCampaigns.tableFooterView = [[UIView alloc] initWithFrame:CGRectMake(0.0f, 0.0f, tblCampaigns.bounds.size.width, 0.01f)]; 

दृश्य के पूर्ण शीर्ष पर बस अपने टेबलव्यू को पिन करें (या इसे शुरू करें)। अतिरिक्त अवांछित अंतरिक्ष एक नेविगेशन बार की ऊंचाई है

नीचे (स्विफ्ट) करने से समस्या हल हो जाती है, लेकिन जब आपको एक हेडर की आवश्यकता नहीं होती है, तो यह काम करता है

 func tableView(tableView: UITableView, heightForHeaderInSection section: Int) -> CGFloat { return CGFloat.min } 

यदि आप करते हैं, तो आपको पहले भाग को छोड़ देना होगा और सामग्री के लिए अन्य का उपयोग करना होगा।

UITableViewDataSource कार्यान्वयन:

 func numberOfSectionsInTableView(tableView: UITableView) -> Int { return <number_of_data_sections>+1 } func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int { // the first section we don't use for data if section == 0 { return 0 } // starting from 1, there are sections we use if section == 1 { let dataSection = section - 1 // use dataSection for your content (useful, when data provided by fetched result controller). For example: if let sectionInfo = myFRC!.sections![dataSection] as? NSFetchedResultsSectionInfo { return sectionInfo.numberOfObjects } } return 0 } func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell { let dataIndexPath = NSIndexPath(forRow: indexPath.row, inSection: (indexPath.section - 1) ) // return cell using transformed dataIndexPath } func tableView(tableView: UITableView, heightForHeaderInSection section: Int) -> CGFloat { if section == 1 { // return your header height } return CGFloat.min } func tableView(tableView: UITableView, viewForHeaderInSection section: Int) -> UIView? { if section == 1 { // return your header view } return nil } func tableView(tableView: UITableView, heightForFooterInSection section: Int) -> CGFloat { // in my case, even when 1st section header was of zero heigh, I saw the space, an that was a footer. I did not need footer at all, so always gave zero height return CGFloat.min } 

और बस। मॉडल परिवर्तन के बारे में कुछ भी नहीं जानता, क्योंकि हम डेटा तक पहुंचने से अनुभाग नंबर को बदलते हैं।