UITableView + शीर्ष पर सामग्री ऑफ़सेट जोड़ें


86

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

कैसे?

जवाबों:


288

मुझे यकीन नहीं है कि मैं आपका पीछा कर रहा हूं, लेकिन मुझे लगता है कि मैं एक ही भविष्यवाणी कर रहा हूं। मेरे मामले में मुझे स्क्रीन के शीर्ष पर ADBannerView के लिए कुछ जगह देनी चाहिए, इसलिए मैंने जो कुछ किया वह देखने के लिए किया गया था।

[self.tableView setContentInset:UIEdgeInsetsMake(50,0,0,0)];

यह मान लेता है UIEdgeInsetsMake (ऊपर, बाएं, नीचे, दाएं) हैं।

वैकल्पिक रूप से स्विफ्ट के साथ भी ऐसा ही है:

self.tableView.contentInset = UIEdgeInsetsMake(50, 0, 0, 0)

स्विफ्ट 4.2:

self.tableView.contentInset = UIEdgeInsets(top: 50, left: 0, bottom: 0, right: 0)

1
शीर्ष पर "लोडिंग" सेल नहीं दिखाने के लिए इसकी आवश्यकता है, जब उस सेल को रेंडर किया जाता है, तो regoData होने पर वापस -50 टॉप पर वापस आ जाता है। धन्यवाद !
डैनियल

23
आप स्क्रॉल संकेतक को भी समायोजित करना चाह सकते हैं: [self.tableView setScrollIndicatorInsets: UIEdgeInsetsMake (50,0,0,0)];
bdev

8
हां, या इससे भी बेहतर, स्क्रॉल संकेतक को इस तरह समायोजित करें: [self.tableView setScrollIndicatorInsets: [self.tableView contentInset]];
डेविड हर्नान्डेज़

5

आप तालिका में एक "खाली" शीर्ष लेख दृश्य जोड़ सकते हैं ... यह एक ऑफसेट करने के लिए तालिका का प्रारंभिक स्वरूप देगा, लेकिन एक बार जब आप स्क्रॉल करना शुरू करते हैं तो ऑफसेट हो जाएगा। NOt सुनिश्चित करें कि आप क्या चाहते हैं।

यदि आपको एक स्थायी ऑफसेट की आवश्यकता है और पहले से ही अनुभाग हेडर का उपयोग नहीं कर रहे हैं, तो आप अनुभाग हेडर के लिए कस्टम दृश्य बनाकर ऊपर से ऑफसेट को समान रूप से बना सकते हैं, खासकर यदि आपके पास केवल एक अनुभाग है, तो यह आपको एक स्थायी ऑफसेट का रूप दे सकता है। ।

मैं नमूना कोड पोस्ट कर सकता हूं अगर यह उन दोनों में से एक जैसा लगता है तो आप क्या देख रहे हैं।


4

मैंने जिगज़ात के जवाब को संयुक्त रूप से दिया:

[self.tableView scrollRectToVisible:CGRectMake(0, 0, 320, 1) animated:NO];

में

- (void)viewDidLoad

इसलिए पहली सेल शीर्ष पर नहीं है।


4

स्विफ्ट 5.1

viewDidLoad में निम्नलिखित जोड़ें

tableView.contentInset.top = 100

वास्तव में यही सब कुछ है।

override func viewDidLoad() {
    super.viewDidLoad()
    tableView.contentInset.top = 100
}

2

लगता है कि आप अपने चारों ओर एक 'दृश्य' लपेटना चाहते हैंUITableView । यदि आप एक है, तो UITableViewControllerआईबी में UITableViewस्वचालित रूप से करने के लिए सेट हो जाएगा viewकी UITableViewController। आप viewप्रॉपर्टी को एक सामान्य में बदलते हैं UIViewऔर उसमें अपना ऐड UITableViewदेते हैं और इसकी भरपाई करते हैं।

--- संपादित करें --- मैंने अभी-अभी अपनी पोस्ट पढ़ी है और सोचा है कि इसका कोई मतलब नहीं है :) जब आप बनाते हैं तो आपको UITableViewControllerयह मिल जाता है (छद्म कोड में):

UITableViewController.view = UITableView

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

UITableViewController.view = UIView

और उस पर अपनी तालिका जोड़ें UIView


0

मैंने इसका उत्तर इस एक के साथ जोड़ा: https://stackoverflow.com/a/9450345/1993937

सामग्री इनसेट के शीर्ष पर तालिका दृश्य प्रदर्शित करने के लिए, इसलिए शीर्ष पर स्थान तालिका दृश्य के आरंभ में थोड़ा नीचे स्क्रॉल किए जाने से कट नहीं जाता है। (18 मेरा शीर्ष अंतर है)

[self.tableView setContentInset:UIEdgeInsetsMake(18,0,0,0)];
[self.tableView setContentOffset:
 CGPointMake(0, -self.songListTable.contentInset.top) animated:YES];
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.