Xcode中给UIView在xib中添加可视化的属性

给UIView在xib中添加可视化的属性

效果如下图:
code xib
可以直接设置view 的 borderColor 、borderWidth、cornerRadius,也可以单独指定view的某个角是圆角。减少了代码中的属性。

完整代码:

UIView+Border.h

#import <UIKit/UIKit.h>@interface UIView (Border)/// 可以在xib里面直接设置的:边线颜色
@property (nonatomic) IBInspectable UIColor *borderColor;/// 可以在xib里面直接设置的:边线宽度
@property (nonatomic) IBInspectable CGFloat borderWidth;/// 可以在xib里面直接设置的:圆角
@property (nonatomic) IBInspectable CGFloat cornerRadius;/// 可以在xib里面直接设置的:裁剪角
@property (nonatomic) IBInspectable BOOL topLeft;
@property (nonatomic) IBInspectable BOOL topRight;
@property (nonatomic) IBInspectable BOOL bottomLeft;
@property (nonatomic) IBInspectable BOOL bottomRight;@end

UIView+Border.m

#import "UIView+Border.h"@implementation UIView (Border)@dynamic borderColor, borderWidth, cornerRadius, topLeft, topRight, bottomLeft, bottomRight;- (void)setBorderColor:(UIColor *)borderColor{self.layer.borderColor = borderColor.CGColor;
}- (void)setBorderWidth:(CGFloat)borderWidth{self.layer.borderWidth = borderWidth;
}- (void)setCornerRadius:(CGFloat)cornerRadius {self.layer.cornerRadius = cornerRadius;
}- (void)setTopLeft:(BOOL)topLeft {[self updateMaskedCornersFor:topLeft corner:kCALayerMinXMinYCorner];
}- (void)setTopRight:(BOOL)topRight {[self updateMaskedCornersFor:topRight corner:kCALayerMaxXMinYCorner];
}- (void)setBottomLeft:(BOOL)bottomLeft {[self updateMaskedCornersFor:bottomLeft corner:kCALayerMinXMaxYCorner];
}- (void)setBottomRight:(BOOL)bottomRight {[self updateMaskedCornersFor:bottomRight corner:kCALayerMaxXMaxYCorner];
}- (void)updateMaskedCornersFor:(BOOL)shouldAdd corner:(CACornerMask)corner {if (@available(iOS 11.0, *)) {if (shouldAdd) {self.layer.maskedCorners |= corner;} else {self.layer.maskedCorners &= ~corner;}}
}@end

使用方法:

只需要把两个类倒入到项目中,xib中就会自动出现上面截图中的属性。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/848440.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

NLP(1)-TF-IDF算法介绍

一、TF-IDF算法介绍 TF-IDF&#xff08;term frequency–inverse document frequency&#xff0c;词频-逆向文件频率&#xff09;是一种用于信息检索&#xff08;information retrieval&#xff09;与文本挖掘&#xff08;text mining&#xff09;的常用加权技术。 TF-IDF是一…

(十六)统计学基础练习题十(选择题T451-478)

本文整理了统计学基础知识相关的练习题&#xff0c;共50道&#xff0c;适用于想巩固统计学基础或备考的同学。来源&#xff1a;如荷学数据科学题库&#xff08;技术专项-统计学三&#xff09;。序号之前的题请看往期文章。 451&#xff09; 452&#xff09; 453&#xff09; 4…

Ubuntu安装cuda

文章目录 前言一、安装NVIDIA驱动1.1 过程中的问题1.2 解决方法1.3 重启后出现 perform MOK management 二、安装Cuda2.1 检查是否安装显卡驱动2.2 安装Cuda2.3 验证CUDA是否安装成功 三、配置环境变量---未完2.4 图片居中加调整大学 总结 #pic_center 前言 只是为方便学习&…

如何将本地项目上传到GitHub

在软件开发过程中&#xff0c;将本地项目上传到GitHub是一个非常重要的步骤。它不仅可以帮助你备份代码&#xff0c;还可以让你与团队成员共享和协作开发。本文将详细介绍如何将本地项目上传到GitHub。 前提条件 已安装Git。如果还没有安装&#xff0c;请参考Git官网进行下载…

机器学习_模型评估与选择

在机器学习中&#xff0c;模型评估与选择是至关重要的步骤。这一过程包括评估模型的性能、选择最适合的模型&#xff0c;以及对模型进行优化&#xff0c;以确保在实际应用中达到最佳效果。以下是详细的讲解&#xff1a; 一、模型评估 模型评估的目的是衡量模型在数据上的表现…

递归书写树形图示例

大叫好&#xff0c;今天书写了一个扁型转换为树型的例子&#xff0c;使用的是递归&#xff0c;请大家食用&#xff0c;无毒 <!DOCTYPE html> <html lang"zh"><head><meta charset"UTF-8"><meta name"viewport" conte…

【Python数据类型的奥秘】:构建程序基石,驾驭信息之海

文章目录 &#x1f680;Python数据类型&#x1f308;1. 基本概念⭐2. 转化&#x1f44a;3. 数值运算&#x1f4a5;4. 数值运算扩展(math库常用函数) &#x1f680;Python数据类型 &#x1f308;1. 基本概念 整数&#xff08;int&#xff09;&#xff1a;整数是没有小数部分的数…

MMKV源码详解

文章目录 前言一、MMKV简介1.mmap2.protobuf 二、MMKV 源码详解1.MMKV初始化2.MMKV对象获取3.文件摘要的映射4.loadFromFile 从文件加载数据5.encode 数据写入 总结 前言 谈到轻量级的数据持久化&#xff0c;在 Android 开发过程中&#xff0c;大家首先想到的应该就是 SharedP…

题号:BC19 题目:反向输出一个四位数

题号&#xff1a;BC19 题目&#xff1a;反向输出一个四位数 废话不多说&#xff0c;上题目&#xff1a; 解题思路&#xff1a; 我们发现可以用%和/两个操作符就可以解决。 代码如下: int main() {int a 0;scanf("%d ",& a);while (a){printf("%d "…

【Vue】普通组件的注册使用-全局注册

文章目录 一、使用步骤二、练习 一、使用步骤 步骤 创建.vue组件&#xff08;三个组成部分&#xff09;main.js中进行全局注册 使用方式 当成HTML标签直接使用 <组件名></组件名> 注意 组件名规范 —> 大驼峰命名法&#xff0c; 如 HmHeader 技巧&#xf…

华安保险:核心系统分布式升级,提升保费规模处理能力2-3倍 | OceanBase企业案例

在3月20日的2024 OceanBase数据库城市行的活动中&#xff0c;安保险信息科技部总经理王在平发表了以“保险行业核心业务系统分布式架构实践”为主题的演讲。本文为该演讲的精彩回顾。 早在2019年&#xff0c;华安保险便开始与OceanBase接触&#xff0c;并着手进行数据库的升级…

雅欣控制HALL IC 产品选型手册,选择您的专属霍尔芯片(霍尔产品主要包括远翔FD,FS全系列,MST全系列霍尔)

HALLICs 应用领域 Applications 应用案例 雅欣为各个应用场景匹配专属HALL元器件 合作伙伴 Partners

专属编程笔记

Utils目录作用 在软件开发中&#xff0c;Utils&#xff08;或 Utilities&#xff09;目录通常用于存放一些通用的、不特定于任何模块的工具类或辅助函数。这些工具类或函数为整个应用程序或多个模块提供便利的功能支持&#xff0c;使得代码更加模块化、易于维护和重用。Utils目…

Echarts 柱状图中每个柱状图如何自定义展示内容

文章目录 需求分析需求 分析 要自定义柱状图中每个柱子的展示内容,您可以通过设置 label 的 formatter 属性来实现。formatter 是一个回调函数,可以用来自定义 label 的显示内容。以下是一个示例代码,演示了如何实现这一点: <!DOCTYPE html> <html lang="e…

【quarks系列】基于Dockerfile构建native镜像

目录 Dockerfile构建代码测试 Dockerfile FROM quay.io/quarkus/ubi-quarkus-native-image:22.3-java11 AS buildWORKDIR /workspace COPY . .RUN ./mvnw -DskipTeststrue clean package -Dnative -U# Stage 2: Create the minimal runtime image FROM registry.access.redhat…

AWS的EC2之间ping不通,服务之间不通,怎么办

AWS启动的两个EC2实例&#xff0c;互相访问不了 修改安全组规则&#xff0c;添加ICMP 流量的入站规则 参考&#xff1a;AWS的EC2之间ping不通,服务之间不通,怎么办_aws ec2同一个区域的服务器-CSDN博客

RabbitMQ支持的消息模型

RabbitMQ基础RabbitMQ支持的消息模型 一、第一种模型(直连) 我们将用Java编写两个程序&#xff0c;发送单个消息的生成者和接收消息并打印出来的消费者。 在下图&#xff0c;“P”是生成者&#xff0c;“C”消费者。中间框是一个队列RabbitMQ保留的消息缓冲区 。 首先构建一个…

思维,1209G1 - Into Blocks (easy version)

一、题目 1、题目描述 2、输入输出 2.1输入 2.2输出 3、原题链接 Problem - 1209G1 - Codeforces 二、解题报告 1、思路分析 考虑&#xff1a; 最终状态为若干段相同数字&#xff0c;且任意两段数字不同 每个数字出现的最左下标和最右下标构成一个区间 连锁反应—…

算法金 | 10 大必知的自动化机器学习库(Python)

大侠幸会&#xff0c;在下全网同名[算法金] 0 基础转 AI 上岸&#xff0c;多个算法赛 Top [日更万日&#xff0c;让更多人享受智能乐趣] 一、入门级自动化机器学习库 1.1 Auto-Sklearn 简介&#xff1a; Auto-Sklearn 是一个自动机器学习库&#xff0c;基于 Python 的 scikit…

【网络编程开发】4.socket套接字及TCP的实现框架 5.TCP多进程并发

4.socket套接字及TCP的实现框架 Socket套接字 Socket套接字是网络编程中用于实现不同计算机之间通信的一个基本构建块。 在现代计算机网络中&#xff0c;Socket套接字扮演着至关重要的角色。它们为应用程序提供了一种方式&#xff0c;通过这种方式&#xff0c;程序能够通过网…