2009-09-17 78 views
11

我正在使用UIImageView作爲我編程創建的UITableViewCell中的accessoryView。我嘗試了所有我能想到的設置accessoryViewalpha屬性,但它不起作用。我能夠設置hiddenopaque屬性沒有問題,但alpha是恨我的。是否可以設置UITableViewCell accessoryView的alpha屬性?

我試圖創建一個包含單一UITableViewController及以下tableView:cellForRowAtIndexPath:方法一個新的項目:

- (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是完全不透明的。我錯過了什麼嗎?我找不到有關這裏發生了什麼的任何信息。

謝謝!

+0

剛剛遇到了這個之後,它攪亂了大約半小時,直到我放棄了。很高興看到我並不孤單。 :D感謝您發佈解決方法。雖然很無聊! – taber 2011-07-29 22:16:25

+0

這仍然不能在iOS 5.1中設置。我也嘗試在設置它作爲accessoryView之前設置UIImageView的alpha,但是這也沒有做任何事。 – arlomedia 2012-09-06 18:08:24

回答

3

試圖大約十億不同的事情,到處尋找一些答案後,我結束了剛剛通過增加子視圖單元格的內容查看,並將其定位爲輔助位置作假。我可以將該子視圖的alpha屬性設置爲我心中的內容。

+0

我最終做了類似的事情,除了我將透明度烘焙成圖像並繼續使用附件視圖。 – Fostah 2017-03-24 12:42:18

0

您是否嘗試設置其背景顏色以清除顏色? 事情是這樣的:

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

是的;沒有幫助。 : -/ – 2009-09-17 00:45:33

0

在那裏你想設置accessoryView.alpha點,你可以把這個代碼:

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]; 

這應該很好地工作,只要你的細胞有純黑色或純白色背景。您可以設置您的面具以匹配其他背景顏色,但是您的accessoryView將會被着色。

與向contentView添加子視圖相比,您不必擔心定位視圖; iOS將根據需要定位accessoryView,並且您的面罩將會跟隨它。

+0

沒有爲我工作.. – nemesis 2013-06-12 11:00:50

2

你可以通過設置

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

歡呼改變一個子類的UITableViewCell的- (void) layoutSubviews阿爾法

+0

,如果你想在運行時改變它? – nemesis 2013-06-12 11:04:33

5

也許你可以做,在willDisplayCell:

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

謝謝!我一直在尋找的東西。 ;) – nemesis 2013-06-12 11:05:26

+1

謝謝!在我的情況下,我正在尋找'cell.contentView.alpha'。 – pimguilherme 2014-04-05 16:29:49

+0

這似乎不適用於iOS 10上的我。 – Fostah 2017-03-24 12:39:21

0

也許晚了,但做法這對我來說至少工作是通過使用這個方法(作爲類或類助手)動態地將alpha直接應用於圖像:

- (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

view1 - 您希望作爲附件添加的視圖。 創建一個與view1尺寸相同的view2。然後將view1作爲子視圖添加到view2,並設置view1的alpha。將view2設置爲tableview單元格的acessoryView。

0

您可以更改色調顏色 - 該操作會更改默認accessotyView的顏色。子類細胞,並在地方上色BOOL _myOption改變加是這樣的:

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

您可以選擇其他顏色,不僅alpha值更改。

相關問題