iOS 里怎样最简单地实现一个全屏,边缘半透明灰的弹出层

2025-05-01 03:39:54
推荐回答(1个)
回答1:

  直观上来看,通过一个UIView配合图片,或者半透明的颜色都可以,这样的确可以简单的实现这个过程。但是比较推荐使用通过Quartz 2D去实现这个功能,涉及到图片素材的加载,还是有性能影响的。IO过程耗费比较高。
贴一个实现:
- (void)drawRect:(CGRect)rect

{

CGContextRef context = UIGraphicsGetCurrentContext();

CGRect currentBounds = self.bounds;

CGGradientRef backgroundGradient;

size_t num_locations = 2;

CGFloat locations[2] = { 0.0, 1.0 };

CGFloat components[8] = { 0.0, 0.0, 0.0, 0.0, // Start color

0.0, 0.0, 0.0, 0.6

}; // End color

CGColorSpaceRef rgbColorspace = CGColorSpaceCreateDeviceRGB();

backgroundGradient = CGGradientCreateWithColorComponents (rgbColorspace, components, locations, num_locations);

CGPoint centerPoint = CGPointMake(CGRectGetMidX(currentBounds), CGRectGetMidY(currentBounds));

CGContextDrawRadialGradient (context, backgroundGradient, centerPoint, 0.0, centerPoint, currentBounds.size.width, kCGGradientDrawsAfterEndLocation);

CGGradientRelease(backgroundGradient);

}
在UIView子类的drawRect中实现即可。