いくつかの棒グラフ (グラフごとに 30 以上のバー) と画面の下部からのプルアップ メニューを含む iPad アプリを作成しています。設計では、これらのバーの左上隅と右上隅の角を丸くする必要がありますが、左下と右下の角は直角にする必要があります。
現在、マスク レイヤーを使用して、個々のグラフ バーの上部の角を丸めています。
#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
これは機能しますが、プルアップ メニューをプルアップすると、重大なフレーム ロス/ラグが発生します (メニューが重なってグラフの上に表示されることに注意してください)。丸みを帯びた角を取り除くと、メニューが美しく引き上がります。私が集めたものから、マスクレイヤーを使用するのではなく、ビューを直接変更して角を丸くする方法が必要です。どうすればこれをやってのけることができるか、または別の可能な解決策を知っている人はいますか? どんな助けでも大歓迎です