gpt4 book ai didi

objective-c - 将 UITableViewCell 与背景混合

转载 作者:行者123 更新时间:2023-12-01 17:01:17 25 4
gpt4 key购买 nike

我有一个似乎无法解决的困境。我有一个由自定义 UITableViewCells 填充的 UITableView,我需要将每个单元格的背景与背景图像混合(如 Photoshop 相乘)(背景图像是 UITableView 后面的 UIView 的一部分)。

我找到了几种方法来进行混合(并且确实有些工作)。我正在使用的混合功能是:

 - (UIImage *)blendOverlay:(UIImage *)topImage withBaseImage:(UIImage *)baseImage toSize:(CGFloat)imageSize
{
UIGraphicsBeginImageContext(CGSizeMake(imageSize, imageSize));
[baseImage drawInRect:CGRectMake(0.0, 0.0, imageSize, imageSize)];
[topImage drawInRect:CGRectMake(0.0, 0.0, imageSize, imageSize) blendMode:kCGBlendModeMulitply alpha:0.5];
UIImage *image = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();

return image;
}

来自 http://www.cocoabuilder.com/archive/cocoa/280142-uiimageview-display-as-multiply.html .

基本上我现在所做的就是通过获取单元格的框架并创建一个新图像,该图像是该框架中的背景部分,从而切掉我结束的背景部分。然而,为了使效果起作用,它本质上需要重新计算和更新每一帧(很像 alpha 效果)。哦,我尝试将计时器设置为 1/60 秒并调用
[tableView reloadData];

但这只是减慢了一切,重绘从未真正发生过。非常感谢任何帮助,我已经搜索了近 3 个小时才能使用。

哦,为了后代的目的,我把背景图像剪成这样:
CGRect r = [tableView rectForRowAtIndexPath:indexPath];
CGRect r2 = [tableView convertRect:r toView:self.view];

CGImageRef imageRef = CGImageCreateWithImageInRect([m_background.image CGImage], r2);
// Get the image by calling [UIImage imageWithCGImage:imageRef]
CGImageRelease(imageRef);

谢谢!

最佳答案

问题是 UITableView不调用 drawRect:每个人的方法UITabelViewCell在移动行时。它似乎在表格移动开始时缓存 View ,并使用该图像来移动整个表格。因此自定义 UITableViewCell没有机会更新背景图像以显示混合背景的移动。

我可以看到在表格单元格移动时为背景图像混合设置动画的一种可能方法是子类 UITableView并覆盖 drawRect:在那个子类中。

关于objective-c - 将 UITableViewCell 与背景混合,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6660970/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com