好吧,它的多比我最初想象的更简单。通过在自定义UITableViewCell
中正确初始化图层(或视图),可以轻松实现我所寻求的行为。但是,我意识到顺序,例如,是否操纵边界或框架属性非常重要。
以下代码片段为中的单元格分组UITableView
的作业。在此示例中,将CAGradientLayer
(作为CALayer
的示例)作为子层添加到UIView
,该子层本身作为子视图添加到该单元的self.contentView
。子视图的框架被调整以适应contentView。该代码例如进入initWithStyle:reuseIdentifier:
的定制UITableViewCell
:
CGRect realFrame = self.contentView.frame;
realFrame.size.width += 20;
UIView *gradientView = [[UIView alloc] initWithFrame:realFrame];
CAGradientLayer *gradientLayer = [[CAGradientLayer alloc] init];
gradientLayer.anchorPoint = CGPointMake(0.0, 0.0);
gradientLayer.frame = gradientView.frame;
gradientLayer.position = CGPointMake(0.0, 0.0);
[gradientLayer setColors:[NSArray arrayWithObjects:(id)[[UIColor colorWithRed:0.0 green:0.0 blue:0.0 alpha:1.0] CGColor], (id)[[UIColor clearColor] CGColor], nil]];
gradientLayer.startPoint = CGPointMake(0.5, 0.0);
gradientLayer.endPoint = CGPointMake(0.5, 1.0);
gradientView.layer.masksToBounds = YES;
gradientView.layer.cornerRadius = 8.0;
[gradientView.layer insertSublayer:gradientLayer atIndex:0];
[self.contentView addSubview:gradientView];
gradientView.autoresizingMask = UIViewAutoresizingFlexibleWidth;
[gradientView release];
[gradientLayer release];
来源
2011-08-18 12:44:22
cel