iphone - समूहीकृत शैली में UITableView में किसी सेल की चौड़ाई कैसे सेट करें




width (5)

.h फ़ाइल में प्रतिनिधि 'UITableViewDataSource' जोड़ें

-(CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath
{ 
    return size;
}

मैं इस पर लगभग 2 दिनों तक काम कर रहा हूं, इसलिए मैंने सोचा कि मैं आपके साथ अपनी शिक्षा साझा करता हूं।

सवाल यह है: क्या समूहबद्ध UITableView में सेल की चौड़ाई बनाना संभव है?

जवाब न है।

लेकिन इस समस्या के आसपास आप दो तरीके प्राप्त कर सकते हैं।

समाधान # 1: एक पतली तालिका तालिका दृश्य के फ्रेम को बदलना संभव है, ताकि तालिका छोटा हो। इसके परिणामस्वरूप UITableView को कम चौड़ाई के साथ सेल को प्रतिपादित किया जाएगा।

इसके लिए एक समाधान इस तरह दिख सकता है:

-(void)viewWillAppear:(BOOL)animated
{
    CGFloat tableBorderLeft = 20;
    CGFloat tableBorderRight = 20;

    CGRect tableRect = self.view.frame;
    tableRect.origin.x += tableBorderLeft; // make the table begin a few pixels right from its origin
    tableRect.size.width -= tableBorderLeft + tableBorderRight; // reduce the width of the table
    tableView.frame = tableRect;
}

समाधान # 2: छवियों द्वारा प्रदान की गई कोशिकाओं के साथ

यह समाधान यहां वर्णित है: http://cocoawithlove.com/2009/04/easy-custom-uitableview-drawing.html

मैं उम्मीद करता हूँ यह जानकारी आपके लिए मददगार थी। बहुत सारी संभावनाओं को आजमाने में मुझे लगभग 2 दिन लगे। यह वही था जो छोड़ा गया था।


अगर कुछ भी काम नहीं करता है तो आप इसे आजमा सकते हैं

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


एक विधि है जिसे स्क्रीन घुमाने पर बुलाया जाता है: viewWillTransitionToSize

यह वह जगह है जहां आपको फ्रेम का आकार बदलना चाहिए। उदाहरण देखें। आपको फ्रेम की तारों को बदलने की जरूरत है।

- (void)viewWillTransitionToSize:(CGSize)size withTransitionCoordinator:(id<UIViewControllerTransitionCoordinator>)coordinator
{
    [coordinator animateAlongsideTransition:nil completion:^(id<UIViewControllerTransitionCoordinatorContext> context)
    {
        int x = 0;
        int y = 0;
        self.tableView.frame = CGRectMake(x, y, 320, self.tableView.frame.size.height);
    }];
}

मैं इसे करता हूँ

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
    UITableViewCell *cell;
    CGFloat tableBorderLeft = self.view.frame.origin.x + 10;
    CGFloat tableBorderRight = self.view.frame.size.width - 20;

    CGRect tableRect = self.view.frame;
    tableRect.origin.x = tableBorderLeft; 
    tableRect.size.width = tableBorderRight; 
    tableView.frame = tableRect;
}

और यह मेरे लिए काम किया


स्विफ्ट में ऐसा करने के लिए, जो चर सेट करने के तरीकों को प्रदान नहीं करता है, आपको frame लिए सेटटर को ओवरराइड करना होगा। मूल रूप से पोस्ट किया गया (कम से कम जहां मुझे यह मिला) here

override var frame: CGRect {
    get {
        return super.frame
    }
    set (newFrame) {
        let inset: CGFloat = 15
        var frame = newFrame
        frame.origin.x += inset
        frame.size.width -= 2 * inset
        super.frame = frame
    }
}




width