我在UIImageView
中使用accessoryView
作为我正在以编程方式创建的UITableViewCell
。我已经尝试了所有我能想到的设置accessoryView
的{{1}}属性,但它不起作用。我可以毫无问题地设置alpha
和hidden
属性,但是opaque
一直在讨厌我。
我尝试创建一个包含单个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;
}
完全不透明。我错过了什么吗?我找不到任何关于这里发生了什么的信息。
谢谢!
答案 0 :(得分:5)
也许你可以在willDisplayCell中做到这一点:
-(void) tableView:(UITableView *)tableView willDisplayCell:(UITableViewCell *)cell forRowAtIndexPath:(NSIndexPath *)indexPath
{
cell.accesoryView.alpha = 0.4;
}
答案 1 :(得分:3)
在尝试了大约十亿种不同的东西并且到处寻找一些答案后,我最终只是通过在单元格的contentView中添加子视图并将其定位到附件位置来伪装它。我能够将该子视图的alpha属性设置为我心中的内容。
答案 2 :(得分:2)
您可以通过设置
来更改子类UITableViewCell的- (void) layoutSubviews
中的alpha
- (void) layoutSubviews
{
self.accessoryView.alpha = 0.4;
}
欢呼声
答案 3 :(得分:0)
您是否尝试将其背景颜色设置为清晰颜色? 像这样:
cell.accessoryView.backgroundColor = [UIColor clearColor];
答案 4 :(得分: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,你的面具将跟随它。
答案 5 :(得分: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;
}
答案 6 :(得分:0)
view1 - 您要添加为附件的视图。 创建一个与view1大小相同的view2。然后将view1作为子视图添加到view2,并设置view1的alpha。将view2设置为tableview单元格的acessoryView。
答案 7 :(得分:0)
您可以更改色调颜色 - 操作会更改默认accessotyView的颜色。子类单元格以及更改着色BOOL _myOption
的位置添加如下内容:
self.tintColor = [self.window.tintColor colorWithAlphaComponent:_myOption?1.0:0.5];
您可以选择任何其他颜色,而不仅仅是按Alpha值更改颜色。