2009-09-17 18 views
11

मैं accessoryView के रूप में UITableViewCell में उपयोग कर रहा हूं कि मैं प्रोग्रामेटिक रूप से बना रहा हूं। मैंने accessoryView की alpha संपत्ति सेट करने के बारे में सोचने के बारे में सोचने की कोशिश की है, लेकिन यह काम नहीं कर रहा है। मैं hidden और opaque गुणों को बिना किसी समस्या के सेट करने में सक्षम हूं, लेकिन alpha मेरे ऊपर नफरत कर रहा है।क्या UITableViewCell accessoryView की अल्फा संपत्ति सेट करना संभव है?

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath { 

    static NSString *CellIdentifier = @"Cell"; 

    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier]; 
    if (cell == nil) { 
     cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier] autorelease]; 
    } 

    cell.textLabel.text = @"Cell"; 

    UIImageView *iv = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"image.png"]]; 
    cell.accessoryView = iv; 
    [iv release]; 

    // cell.accessoryView.hidden = YES; // works 
    cell.accessoryView.alpha = 0.5f; // fails 

    return cell; 
} 

कि आप समझ गए होंगे कि accessoryView पूरी तरह से अपारदर्शी है:

मुझे लगता है कि एक भी UITableViewController और निम्नलिखित tableView:cellForRowAtIndexPath: विधि शामिल एक नई परियोजना बनाने की कोशिश की। क्या मैं कुछ भूल रहा हूँ? मुझे यहां क्या हो रहा है इसके बारे में कोई जानकारी नहीं मिल रही है।

धन्यवाद!

+0

मैंने इसे छोड़ने तक लगभग आधा घंटे तक गड़बड़ करने के बाद भी इसमें भाग लिया। देखकर खुशी हुई कि मैं अकेला नहीं हूँ। : कामकाज पोस्ट करने के लिए डी धन्यवाद। हालांकि बमर! – taber

+0

यह अभी भी आईओएस 5.1 में सेटटेबल नहीं है। मैंने UIImageView के अल्फा को accessoryView के रूप में सेट करने से पहले सेट करने का भी प्रयास किया, लेकिन उसने कुछ भी नहीं किया। – arlomedia

उत्तर

3

एक अरब विभिन्न चीजों के बारे में की कोशिश कर रहा है और कुछ जवाब के लिए हर जगह देखने के बाद, मैं सिर्फ सेल की contentView को एक subview जोड़ने और गौण स्थिति के लिए यह स्थिति निर्धारित करके यह faking समाप्त हो गया। मैं उस सबव्यू पर अल्फा संपत्ति को अपने दिल की सामग्री पर सेट करने में सक्षम हूं।

UIView *accessoryMask = [[UIView alloc] initWithFrame:cell.accessoryView.frame]; 
accessoryMask.backgroundColor = [UIColor blackColor]; // or whiteColor 
accessoryMask.alpha = 0.5; 
accessoryMask.userInteractionEnabled = FALSE; 
[cell.accessoryView addSubview:accessoryMask]; 
[accessoryMask release]; 

यह लंबे समय के रूप में अच्छी तरह से काम करना चाहिए के रूप में अपने सेल एक सादे काले या सादे सफेद पृष्ठभूमि है:

+0

मैंने कुछ ऐसा करने का अंत किया, सिवाय इसके कि मैंने एक छवि में पारदर्शिता पकाई और सहायक दृश्य का उपयोग जारी रखा। – Fostah

0

क्या आपने रंग को साफ़ करने के लिए अपने पृष्ठभूमि रंग को सेट करने का प्रयास किया था? कुछ इस तरह:

cell.accessoryView.backgroundColor = [UIColor clearColor]; 
+0

हाँ; मदद नहीं की : -/ –

0

बिंदु जहां accessoryView.alpha स्थापित करने के लिए कोशिश कर रहे हैं, आप इस कोड लगा सके। आप अपने मुखौटा को अन्य पृष्ठभूमि रंगों से मिलान करने के लिए सेट कर सकते हैं, लेकिन फिर आपके एक्सेसरी व्यू को टिंटेड किया जाएगा।

सामग्री दृश्य में एक सबव्यू जोड़ने पर लाभ यह है कि आपको दृश्य को स्थितिबद्ध करने की चिंता करने की आवश्यकता नहीं है; आईओएस accessoryView को आवश्यकतानुसार स्थिति देगा और आपका मुखौटा इसका पालन करेगा।

+0

मेरे लिए काम नहीं किया .. – nemesis

2

आप

- (void) layoutSubviews 
{ 
    self.accessoryView.alpha = 0.4; 
} 

चियर्स स्थापना करके एक subclassed UITableViewCell की - (void) layoutSubviews में अल्फा बदल सकते हैं

+0

और यदि आप रनटाइम में इसे बदलना चाहते हैं? – nemesis

5

हो सकता है कि आप कर सकते हैं कि willDisplayCell में:

-(void) tableView:(UITableView *)tableView willDisplayCell:(UITableViewCell *)cell forRowAtIndexPath:(NSIndexPath *)indexPath 
{ 
    cell.accesoryView.alpha = 0.4; 
} 
+0

धन्यवाद! जो चीज़ मैं खोज रहा था। ;) – nemesis

+1

धन्यवाद! मेरे मामले में मैं इसके बजाय 'cell.contentView.alpha' की तलाश में था। – pimguilherme

+0

यह आईओएस 10 पर मेरे लिए काम नहीं कर रहा प्रतीत होता है। – Fostah

0

हो सकता है कि देर से, लेकिन एक दृष्टिकोण जो मेरे लिए कम से कम काम कर रहा था, इस पद्धति का उपयोग करके गतिशील रूप से छवि पर अल्फा को लागू करना था (कक्षा में श्रेणी या सहायक के रूप में):

- (UIImage *)imageByApplyingAlpha:(CGFloat)alpha toImage:(UIImage *)initialImage 
{ 
    UIGraphicsBeginImageContextWithOptions(initialImage.size, NO, 0.0f); 

    CGContextRef ctx = UIGraphicsGetCurrentContext(); 
    CGRect area = CGRectMake(0, 0, initialImage.size.width, initialImage.size.height); 

    CGContextScaleCTM(ctx, 1, -1); 
    CGContextTranslateCTM(ctx, 0, -area.size.height); 

    CGContextSetBlendMode(ctx, kCGBlendModeMultiply); 

    CGContextSetAlpha(ctx, alpha); 

    CGContextDrawImage(ctx, area, initialImage.CGImage); 

    UIImage *newImage = UIGraphicsGetImageFromCurrentImageContext(); 

    UIGraphicsEndImageContext(); 

    return newImage; 
} 
0

देखें 1 - दृश्य जिसे आप सहायक के रूप में जोड़ना चाहते हैं। व्यू 1 के समान आकार के साथ व्यू 2 बनाएं। फिर view2 को व्यू 2 के रूप में जोड़ें और व्यू 1 के अल्फा सेट करें। Tableview सेल के लिए view2 को AcessoryView के रूप में सेट करें।

0

आप टिंट रंग बदल सकते हैं - कि हेरफेर डिफ़ॉल्ट accessotyView का रंग बदलता है।

self.tintColor = [self.window.tintColor colorWithAlphaComponent:_myOption?1.0:0.5]; 

आप न केवल किसी अन्य रंग चुन सकते हैं, अल्फा मूल्य द्वारा इसे बदलने: उपवर्ग सेल और जगह में जहां BOOL _myOption colorize कुछ इस तरह जोड़ने बदल जाता है।

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