UIView子类中的CAShapeLayer
我想用掩码来创buildUIView
的子类。 我尝试过使用drawRect
和layoutSubviews
但没有成功,在这些尝试视图不出现。
- (void)layoutSubviews { [super layoutSubviews]; UIBezierPath *path = [UIBezierPath new]; [path moveToPoint:(CGPoint){self.frame.origin.x + 10, self.frame.origin.y}]; [path addLineToPoint:(CGPoint){self.frame.origin.x + self.frame.size.width, self.frame.origin.y}]; [path addLineToPoint:(CGPoint){self.frame.origin.x + self.frame.size.width, self.frame.origin.y + self.frame.size.height}]; [path addLineToPoint:(CGPoint){self.frame.origin.x +10, self.frame.origin.y + self.frame.size.height}]; [path addLineToPoint:(CGPoint){self.frame.origin.x +10, self.frame.origin.y + (self.frame.size.height/2) + 5}]; [path addLineToPoint:(CGPoint){self.frame.origin.x , self.frame.origin.y + (self.frame.size.height/2)}]; [path addLineToPoint:(CGPoint){self.frame.origin.x +10, self.frame.origin.y + (self.frame.size.height/2) - 5}]; [path closePath]; CAShapeLayer *mask = [CAShapeLayer new]; mask.frame = self.bounds; mask.path = path.CGPath; self.layer.mask = mask; }
我有什么方法覆盖这样做? 我看到类似问题的答案,但不适合我。
我find了一个解决scheme。 我在我的视野里创造了另一个视angular,并将面具应用于她。
码:
@interface BubbleView() @property (nonatomic, strong) UIView *maskView; @end @implementation BubbleView -(id) initWithCoder:(NSCoder *)aDecoder { self = [super initWithCoder:aDecoder]; self.maskView = [[UIView alloc] init]; [self addSubview:self.maskView]; self.backgroundColor = [UIColor colorWithWhite:1.0 alpha:0.0]; return self; } - (void)drawRect:(CGRect)rect { self.maskView.frame = self.bounds; self.maskView.backgroundColor = [UIColor whiteColor]; [super drawRect:rect]; } - (void)layoutSubviews { [super layoutSubviews]; UIBezierPath *path = [UIBezierPath new]; [path moveToPoint:(CGPoint){self.maskView.frame.origin.x + 10, self.maskView.frame.origin.y}]; [path addLineToPoint:(CGPoint){self.maskView.frame.origin.x + self.maskView.frame.size.width, self.maskView.frame.origin.y}]; [path addLineToPoint:(CGPoint){self.maskView.frame.origin.x + self.maskView.frame.size.width, self.maskView.frame.origin.y + self.maskView.frame.size.height}]; [path addLineToPoint:(CGPoint){self.maskView.frame.origin.x +10, self.maskView.frame.origin.y + self.maskView.frame.size.height}]; [path addLineToPoint:(CGPoint){self.maskView.frame.origin.x +10, self.maskView.frame.origin.y + (self.maskView.frame.size.height/2) + 5}]; [path addLineToPoint:(CGPoint){self.maskView.frame.origin.x , self.maskView.frame.origin.y + (self.maskView.frame.size.height/2)}]; [path addLineToPoint:(CGPoint){self.maskView.frame.origin.x +10, self.maskView.frame.origin.y + (self.maskView.frame.size.height/2) - 5}]; [path closePath]; CAShapeLayer *mask = [CAShapeLayer new]; mask.frame = self.maskView.bounds; mask.path = path.CGPath; self.maskView.layer.mask = mask; [self layoutIfNeeded]; }
- 添加barButtonItems到一个没有导航控制器的UINavigationBar
- iAd的`UIViewController`类别canDisplayBannerAds是做什么的?
- applicationWillTerminate:不被调用
- 水平表视图(在TableViewCell内)不响应滚动
- MFMessageComposeViewController没有标题或取消button
- 带有自定义形状导航栏的UINavigationController
- 无法find实体的NSManagedObjectModel
- 对于更便宜的颜色:UIView或UIImage
- NSInvocation返回值,但通过EXC_BAD_ACCESS使应用程序崩溃