我正在构建一个 iPad 应用程序,其中包括多个条形图(每个图表 30 多个条形图)和屏幕底部的上拉菜单。该设计要求这些条在左上角和右上角有圆角,但在左下角和右下角有方角。
现在,我正在使用遮罩层将每个单独的图表栏的顶角四舍五入:
#import "UIView+RoundedCorners.h"
#import <QuartzCore/QuartzCore.h>
@implementation UIView (RoundedCorners)
-(void)setRoundedCorners:(UIRectCorner)corners radius:(CGFloat)radius {
CGRect rect = self.bounds;
// Create the path
UIBezierPath *maskPath = [UIBezierPath bezierPathWithRoundedRect:rect
byRoundingCorners:corners
cornerRadii:CGSizeMake(radius, radius)];
// Create the shape layer and set its path
CAShapeLayer *maskLayer = [CAShapeLayer layer];
maskLayer.frame = rect;
maskLayer.path = maskPath.CGPath;
// Set the newly created shape layer as the mask for the view's layer
self.layer.mask = maskLayer;
self.layer.shouldRasterize = YES;
}
@end
这可行,但是当我拉起上拉菜单时会出现严重的帧丢失/滞后(请注意,菜单重叠,出现在图表顶部)。当我去掉圆角时,菜单很漂亮。据我所知,我需要一种通过直接修改视图而不是使用遮罩层来圆角的方法。有谁知道我该如何解决这个问题或有其他可能的解决方案?非常感谢任何帮助