2013-05-06 16 views
5

से बाहर शीर्ष पर मैं वर्तमान में एक view controller कि एक Navigation bar के शामिल है, एक UIView है कि दो UIButtons subviews के रूप में जोड़ा द्वारा पीछा किया है। वहां UITableView है जो कंटेनर UIView के नीचे शुरू होता है।मेक UIView स्क्रॉल दृश्य

इस समय, जब उपयोगकर्ता UITableView स्क्रॉल करता है तो यह UIView और UIButtons के पीछे चला जाता है। मैं वास्तव में क्या करना चाहता हूं UIView और UIButtons तालिका दृश्य के साथ आगे बढ़ने के लिए है, लेकिन केवल उनकी ऊंचाई के मूल्य से जो इस मामले में 58 पिक्सेल है। प्रवाह इस तरह होगा ...

1) तालिका स्क्रॉल और UIView पहले 58 पिक्सल के लिए इसके साथ चलता है।

2) उपयोगकर्ता तालिका को स्क्रॉल करना जारी रखता है लेकिन UIView "पिन" स्वयं navigation bar के तहत दृश्य से बाहर है।

3) जब उपयोगकर्ता UIView को वापस तालिका को स्क्रॉल करता है तो उसे उठाया जाता है और वापस देखने के लिए खींच लिया जाता है। मेरा मानना ​​है कि नया फेसबुक ऐप टाइमलाइन में कुछ ऐसा ही करता है।

मैं UIView को तालिका के TableHeaderView के रूप में सेट नहीं करना चाहता क्योंकि मेरे पास एक पुल-टू-रीफ्रेश भी है जो बटन के ऊपर बैठता है और भयानक लग रहा है। मैंने तालिका के अंतर्निहित scrollview के contentOffset गुणों के साथ खेलने की कोशिश की है लेकिन एक ईंट की दीवार मारा है।

कहां से शुरू करना है इस पर कोई सलाह की सराहना की जाएगी।

धन्यवाद

संपादित करें: मैं थोड़ा आगे हो गया हूँ और UIView के फ्रेम ले जाने के लिए इस कोड का उपयोग।

-(void) scrollViewDidScroll:(UIScrollView *)scrollView 
{ 
    NSLog (@"Content Offset: %f", self.tableView.contentOffset.y); 
    NSLog (@"Button Frame: %f", self.btnBackground.frame.origin.y); 

     if (self.tableView.contentOffset.y > 0) 
     { 
      CGRect newFrame = self.btnBackground.frame; 
      newFrame.origin.x = 0; 
      newFrame.origin.y = -self.tableView.contentOffset.y; 
      [self.btnBackground setFrame: newFrame]; 
     } 

} 

समस्या अब है कि scrollViewDidScroll प्रतिनिधि विधि निकाल दिया नहीं है जल्दी से पर्याप्त तालिका दृश्य तेजी से स्क्रॉल किया जाता है, तो है। परिणाम यह है कि UIView जल्दी स्क्रॉल करते समय पूरी तरह से अपनी मूल स्थिति में वापस नहीं आता है।

+1

अरे, मैं अभी इसी तरह के मुद्दे से निपटने की कोशिश कर रहा हूं। क्या आपने कभी पता लगाया कि क्या करना है? @paulmorris – Thomas

+0

संबंधित प्रश्न: http://stackoverflow.com/questions/25374090/move-a-view-when-scrolling-in-uitableview –

+0

अरे, मैं भी इसी तरह की स्थिति में आया था। डिजाइनर चाहता है कि लेआउट एंड्रॉइड में कोऑर्डिनेटरलाइट की तरह व्यवहार करे। क्या आपने इसे समझ लिया था? –

उत्तर

0

खैर पूछे जाने वाले प्रश्न (y) अच्छी तरह से, मेरे लिए मैं पहले होगा: एक मुख्य UIScrollView कि इसके तहत दोनों अपने Topview और tableView शामिल का उपयोग करें और है कि अपने शीर्ष UIView और UITableView रूप में एक ही चौड़ाई है और करने के लिए अपनी ऊंचाई सेट ऊंचाई (तालिका दृश्य) + ऊंचाई (शीर्ष दृश्य) हो। दूसरा: UITableViewUISCrollView का उप-वर्ग है, तो आप यह जानने के लिए scrollViewDidScroll प्रतिनिधि का उपयोग कर सकते हैं कि तालिकादृश्य ऊपर या नीचे स्क्रॉल किया गया है या नहीं। इस में कैस आप दो मामलों में होगा:

1) tableview ऊपर स्क्रॉल किया है => आप सेट सामग्री मुख्य scrollview की भरपाई होने की

[scrollView setContentOffset:CGPointMake(0, 58) animated:YES]; 

2) जब तालिका दृश्य आप नीचे स्क्रॉल किया है सामग्री ऑफसेट फिर से रीसेट कर सकते हैं

[scrollView setContentOffset:CGPointMake(0, 0) animated:YES]; 
+0

उत्तर के लिए धन्यवाद, लेकिन यह तालिका और स्क्रॉल दृश्य के साथ स्वचालित रूप से शीर्ष दृश्य को स्क्रॉल नहीं करता है। यह सब अनिवार्य रूप से देखने की जरूरत है जैसे UIView तालिका दृश्य का हिस्सा है और इसके साथ आसानी से स्क्रॉल करता है। –

0

स्क्रॉल सामग्री ऑफसेट एक अच्छा विचार है। इसके अलावा यदि आपके पास टेबलव्यू में केवल एक अनुभाग है तो एक शीर्ष शीर्ष विजेट विजेट का प्रतिनिधित्व करने वाले कस्टम हेडर व्यू करना है। यदि एक से अधिक अनुभाग एक अतिरिक्त खाली अनुभाग बनाते हैं जो आपके कस्टम हेडर को वापस कर देगा।

आप इस स्टैक ओवरफ़्लो पोस्ट को देख सकते हैं। Customize UITableview Header Section