美文网首页
iOS UIView 单边剪裁

iOS UIView 单边剪裁

作者: 黑色幽默_0d96 | 来源:发表于2023-07-15 14:40 被阅读0次

    UIView 的clipToBounds属性 和 CALayer的maskToBounds属性,都可以实现视图的四周剪裁,即超出视图范围不显示

    但是如果只想超出某一边的视图不显示,另外几边的视图超出部分依旧显示,这种需求怎么处理呢?

    有一个比较简单,但是并不灵活的方式的

    UIView *view = [[UIView alloc] initWithFrame:CGRectMake(50, 100, 200, 200)];
        view.clipsToBounds = NO;
        view.backgroundColor = [UIColor redColor];
        
        CAShapeLayer *layer = [CAShapeLayer layer];
        layer.path = [UIBezierPath bezierPathWithRect:CGRectMake(0, -50, 300, 300)].CGPath;
        view.layer.borderWidth = 1;
        view.layer.borderColor = [UIColor blackColor].CGColor;
        view.layer.mask = layer;
        
        UIView *sub = [[UIView alloc] initWithFrame:CGRectMake(-20, -20, 240, 240)];
        sub.backgroundColor = [[UIColor blueColor] colorWithAlphaComponent:0.3];
        [view addSubview:sub];
        [self.view addSubview:view];
    

    这种方式,可以使得view左边被剪裁,超出左边的部分不显示,其他几边超出的部分依旧会显示
    只是需要严格计算超出的部分的大小,才能达到比较理想的效果

    相关文章

      网友评论

          本文标题:iOS UIView 单边剪裁

          本文链接:https://www.haomeiwen.com/subject/fbpmbltx.html