首页 > 其他分享 >iOS Label 作为分割线时 上下左右切边

iOS Label 作为分割线时 上下左右切边

时间:2023-05-22 18:32:56浏览次数:59  
标签:origin iOS 切边 label UIColor borderWidth 100 分割线 maskFrame

- (void)viewDidLoad {
    [super viewDidLoad];
    // Do any additional setup after loading the view, typically from a nib.
    
    
//    CGFloat borderWidth = 20.0;
//    UILabel *label = [[UILabel alloc] initWithFrame:CGRectMake(100, 400, 100, 100)];
    UILabel *label1 = [[UILabel alloc] initWithFrame:CGRectMake(200, 400, 100, 100)];
    label1.backgroundColor = [UIColor blueColor];
    [self.view addSubview:label1];
//
//    label.backgroundColor = [UIColor cyanColor];
//    [self.view addSubview:label];
//    label.layer.borderWidth = borderWidth;
//    label.layer.borderColor = [UIColor redColor].CGColor;
//    
//    CALayer *mask = [CALayer layer];
//    // The mask needs to be filled to mask
//    [mask setBackgroundColor:[[UIColor blackColor] CGColor]];
//    // Make the masks frame smaller in height
//    CGRect maskFrame = CGRectInset([label bounds], 0, borderWidth/2);
//    // Move the maskFrame to the top
    maskFrame.origin.y = 0;
    maskFrame.origin.y = borderWidth*2;
//    maskFrame.origin.y = borderWidth;
//    [mask setFrame:maskFrame];
//    [[label layer] setMask:mask];
    
    
    
        CGFloat borderWidth = 20.0;
        UILabel *label = [[UILabel alloc] initWithFrame:CGRectMake(100, 400, 100, 100)];
//        UILabel *label1 = [[UILabel alloc] initWithFrame:CGRectMake(200, 400, 100, 100)];
//        label1.backgroundColor = [UIColor blueColor];
//        [self.view addSubview:label1];
    
        label.backgroundColor = [UIColor yellowColor];
        [self.view addSubview:label];
//    [self clipLayerBorder:label direction:LayerDirectionNone borderWidth:borderWidth borderColor:[UIColor redColor]];
    
//    [self clipLayerBorder:label direction:LayerDirectionLeft borderWidth:borderWidth borderColor:[UIColor redColor]];
    
//    [self clipLayerBorder:label direction:LayerDirectionRight borderWidth:borderWidth borderColor:[UIColor redColor]];
    
    [self clipLayerBorder:label direction:LayerDirectionNone borderWidth:borderWidth borderColor:[UIColor redColor]];
    
}



- (void)clipLayerBorder:(UILabel *)label direction:(LayerClipDirection)direction borderWidth:(CGFloat)borderWidth borderColor:(UIColor *)color
{
//    CGFloat borderWidth = borderWidth;
    
//    label = [[UILabel alloc] initWithFrame:CGRectMake(100, 400, 100, 100)];
    
//    UILabel *label1 = [[UILabel alloc] initWithFrame:CGRectMake(200, 400, 100, 100)];
//    label1.backgroundColor = [UIColor blueColor];
//    [self.view addSubview:label1];
    
    label.backgroundColor = [UIColor cyanColor];
//    [self.view addSubview:label];
    label.layer.borderWidth = borderWidth;
    label.layer.borderColor = color.CGColor;
    
    CALayer *mask = [CALayer layer];
    // The mask needs to be filled to mask
    [mask setBackgroundColor:[[UIColor blackColor] CGColor]];
    // Make the masks frame smaller in height
//    CGRect maskFrame = CGRectInset([label bounds], 0, borderWidth/2);
//    // Move the maskFrame to the top
//    //    maskFrame.origin.y = 0;
//    //    maskFrame.origin.y = borderWidth*2;
//    maskFrame.origin.y = borderWidth;
    CGRect maskFrame = CGRectZero;
    if (direction == LayerDirectionUp) {
        maskFrame = CGRectInset([label bounds], 0, borderWidth/2);
        // Move the maskFrame to the top
        //    maskFrame.origin.y = 0;
        //    maskFrame.origin.y = borderWidth*2;
        maskFrame.origin.y = borderWidth;
    }
    
    if (direction == LayerDirectionDown) {
        maskFrame = CGRectInset([label bounds], 0, borderWidth/2);
        // Move the maskFrame to the top
            maskFrame.origin.y = 0;
        //    maskFrame.origin.y = borderWidth*2;
//        maskFrame.origin.y = borderWidth;
    }
    
    if (direction == LayerDirectionLeft) {
        maskFrame = CGRectInset([label bounds], borderWidth/2, 0);
        // Move the maskFrame to the top
        maskFrame.origin.x = borderWidth;
        //    maskFrame.origin.y = borderWidth*2;
        //        maskFrame.origin.y = borderWidth;
    }
    
    if (direction == LayerDirectionRight) {
        maskFrame = CGRectInset([label bounds], borderWidth/2, 0);
        // Move the maskFrame to the top
        maskFrame.origin.x = 0;
        //    maskFrame.origin.y = borderWidth*2;
        //        maskFrame.origin.y = borderWidth;
    }
    
    if (direction == LayerDirectionNone) {
        maskFrame = CGRectInset([label bounds], borderWidth/2, borderWidth/2);
        //切掉右边和下边
        maskFrame.origin.x = 0;
        maskFrame.origin.y = 0;

        //切掉左边和上边
//        maskFrame.origin.x = borderWidth;
//        maskFrame.origin.y = borderWidth;
        
//        maskFrame = CGRectInset([label bounds], 0, 0);
    }
    
    
    [mask setFrame:maskFrame];
    [[label layer] setMask:mask];
}

标签:origin,iOS,切边,label,UIColor,borderWidth,100,分割线,maskFrame
From: https://blog.51cto.com/u_16124099/6326598

相关文章

  • iOS 免费后台系统 Bmob平台
    Bmob平台为您的移动应用提供了一个完整的后端解决方案,我们提供轻量级的SDK开发包,让开发者以最小的配置和最简单的方式使用Bmob平台提供的服务,进而完全消除开发者编写服务器代码以及维护服务器的操作。使用CocoaPods安装BmobSDK如何使用CocoaPods安装BmobSDK可查看我们提供的文档:......
  • iOS 常用UI 部分常用 方法
    1、设置NavigationBar主题UINavigationBar*navigatonBar=[UINavigationBarappearance];//获取到navigationBar[navigatonBarsetBackgroundImage:<#(nullableUIImage*)#>forBarMetrics:<#(UIBarMetrics)#>]; 设置标题颜色NSMutableDictionary*attributes=[NSMut......
  • 【iOS开发】UIWebView调用JS点击事件(stringByEvaluatingJavaScriptFromString)
    一、场景描述产品需求是移动端app要调用h5页面,然后监听h5代码中的某个方法,最终执行h5中的具体代码。二、具体代码.m文件@interfaceViewController()<UIWebViewDelegate>@property(nonatomic,strong)UIWebView*webView;@end@implementationViewController-(void)viewDid......
  • 【Swift开发】混合开发-React Native集成到原生iOS项目
    一、场景描述针对目前项目需求,部分功能需要动态热部署,因此考虑使用ReactNative。下面有个Demo介绍原生iOS项目是如何与ReactNative集成的。先贴下ReactNative中文网是官方教程:ReactNative嵌入到现有原生应用。对老项目来说,官方推荐使用第三方包管理器CoCoaPods来自动集成,但是考......
  • 【iOS开发】This application's application-identifier entitlement does not match
    Xcode编译报错:Thisapplication’sapplication-identifierentitlementdoesnotmatchthatoftheinstalledapplication.Thesevaluesmustmatchforanupgradetobeallowed.原因:两次编译的用的证书不一致。解决:把之前装的app卸载,重新安装下。......
  • 【iOS开发】后台定位&&socket长链接
    参考:iOS9后台定位无限后台定位注意:这个上架appstore可能会被拒绝,如果你的应用不是和地图类相关的话。目前没想到好的解决方案,有的话请发邮件告诉博主一下,谢谢!!!......
  • 【iOS开发】iOS系统更新到10.3以上无法下载企业应用
    问题描述:iOS系统10.3以上系统,通过公司app发布平台下载企业应用,在Safari中点击下载链接,服务器报错无法链接到iapp.ihefe.com。如图:解决办法:打开通用-》关于本机-》证书信任设置,然后把iapp.ihefe.com给打开,点击继续就行了。如图:......
  • 【iOS开发】launch Images启动图片设置(UILaunchImageFile)之002
    一、实现效果:通过直接给图片起默认的名字,让app启动页自动加载启动图片。二、注意点:·图片命名一定要按苹果官方的指定规则命名,图片的像素也要符合规则;·如果横竖屏图片都需要,记得在Xcode中勾选上项目支持横竖屏。三、官方描述:四、LaunchImage命名规则实例https://developer.apple.......
  • 【iOS开发】Device Compatibility(设备兼容性)
    设备兼容性https://developer.apple.com/library/content/documentation/DeviceInformation/Reference/iOSDeviceCompatibility/DeviceCompatibilityMatrix/DeviceCompatibilityMatrix.html......
  • 【iOS】MD5 与Base64 的区别
    MD5不可逆性(只能加密)。任意长度的明文字符串,加密后得到的密文字符串是长度固定的。Base64可逆性(能加密和解密)。可以将图片等二进制文件转换为文本文件。可以把非ASCII字符的数据转换成ASCII字符,避免不可见字符。......