IOS 添加自动布局约束NSLayoutConstraint

自定义UICollectionViewCell,并添加自动布局约束。

#import "ViewChooseView.h"#pragma mark - Cell@interface ViewChooseViewCell : UICollectionViewCell@property (nonatomic, strong) UILabel *showTemeLab;
@property (nonatomic, strong) UILabel *promotionTextLab;
@property (nonatomic, strong) UIView *showTimeView;
@property (nonatomic, strong) NSDictionary *data;
//马戏场次控件高度
@property (nonatomic, assign) CGFloat showTimeLabHeight;
//促销标签控件高度
@property (nonatomic, assign) CGFloat promotionLabHeight;
//马戏场次顶部边框间距约束
@property (nonatomic, strong) NSLayoutConstraint *showTimeTopConstraint;@end@implementation ViewChooseViewCell- (instancetype)initWithFrame:(CGRect)frame {if (self = [super initWithFrame:frame]) {[self configUI];}return self;
}- (void)configUI {//计算场次UILabel的高度NSString *text = @"";self.showTimeLabHeight =[text boundingRectWithSize:CGSizeMake(CLSCREENWIDTH, MAXFLOAT) options:NSStringDrawingUsesLineFragmentOrigin attributes:@{NSFontAttributeName:[UIFont systemFontOfSize:12]} context:nil].size.height;//计算促销文案UILabel的高度self.promotionLabHeight =[text boundingRectWithSize:CGSizeMake(CLSCREENWIDTH, MAXFLOAT) options:NSStringDrawingUsesLineFragmentOrigin attributes:@{NSFontAttributeName:[UIFont systemFontOfSize:9]} context:nil].size.height;self.showTimeView = [[UIView alloc] initWithFrame:CGRectMake(0, 0, 0, 35)];self.showTimeView.backgroundColor = [UIColor colorWithHexString:@"F9F9F9" withAlpha:1];self.showTimeView.cornerRadius = 5;self.showTimeView.layer.borderColor = [UIColor colorWithHexString:@"7890FF" withAlpha:0.5].CGColor;self.showTimeView.layer.borderWidth = 0;self.showTimeView.clipsToBounds = YES;self.showTemeLab = [[UILabel alloc] initWithFrame:CGRectMake(0, 0, 0, self.showTimeLabHeight)];
//使用autolayout 设置为NO ,不是有autolayout 设置为YES;self.showTemeLab.translatesAutoresizingMaskIntoConstraints = NO;self.showTemeLab.textColor = [UIColor colorWithHexString:@"767676"];[self.showTemeLab setFont:[UIFont systemFontOfSize:12]];self.promotionTextLab = [[UILabel alloc] initWithFrame:CGRectMake(0, 0, 0, self.promotionLabHeight)];//使用autolayout 设置为NO ,不是有autolayout 设置为YES;self.promotionTextLab.translatesAutoresizingMaskIntoConstraints = NO;self.promotionTextLab.textColor = [UIColor colorWithHexString:@"FF5B03"];[self.promotionTextLab setFont:[UIFont systemFontOfSize:9]];[self.showTimeView addSubview:self.showTemeLab];[self.showTimeView addSubview:self.promotionTextLab];//马戏场次顶部约束间距,需要动态改变self.showTimeTopConstraint = [self.showTemeLab.topAnchor constraintEqualToAnchor:self.showTimeView.topAnchor constant:(35-self.showTimeLabHeight)/2];//添加自动布局约束[NSLayoutConstraint activateConstraints:@[[self.promotionTextLab.centerXAnchor constraintEqualToAnchor:self.showTimeView.centerXAnchor],[self.showTemeLab.centerXAnchor constraintEqualToAnchor:self.showTimeView.centerXAnchor],//[self.showTemeLab.centerYAnchor constraintEqualToAnchor:self.showTimeView.centerYAnchor],//[self.promotionTextLab.centerYAnchor constraintEqualToAnchor:self.showTimeView.centerYAnchor],self.showTimeTopConstraint,[self.promotionTextLab.topAnchor constraintEqualToAnchor:self.showTemeLab.bottomAnchor constant:0],]];[self.contentView addSubview:self.showTimeView];}
- (void)setData:(NSDictionary *)data{_data = data;CGFloat showTimeWidth = [[data objectForKey:@"width"] floatValue];CGFloat promotionTextWidth = [[data objectForKey:@"promotionTextWidth"] floatValue];self.showTimeView.width = showTimeWidth>promotionTextWidth?showTimeWidth:promotionTextWidth;self.showTemeLab.width = showTimeWidth;self.promotionTextLab.width = promotionTextWidth;NSString *title = [data safeStringForKey:@"title"];NSString *promotionText = [data safeStringForKey:@"promotionText"];BOOL isSelect = [[data objectForKey:@"isSelect"] boolValue];BOOL isEnable = [[data objectForKey:@"isEnable"] boolValue];self.showTemeLab.text = title;self.promotionTextLab.text = promotionText;if([promotionText clIsNotEmpty]){self.promotionTextLab.hidden = NO;//改变顶部约束间距self.showTimeTopConstraint.constant = (35-self.showTimeLabHeight-self.promotionLabHeight)/2;}else{self.promotionTextLab.hidden = YES;//改变顶部约束间距self.showTimeTopConstraint.constant = (35-self.showTimeLabHeight)/2;}self.promotionTextLab.textColor = [UIColor colorWithHexString:@"#FF5B03"];if(isEnable){if(isSelect){self.showTimeView.layer.borderWidth = 0.5;self.showTimeView.backgroundColor = [UIColor colorWithHexString:@"7890FF" withAlpha:0.02];self.showTemeLab.textColor = [UIColor colorWithHexString:@"#7809FF"];}else{self.showTimeView.layer.borderWidth = 0;self.showTimeView.backgroundColor = [UIColor colorWithHexString:@"F9F9F9" withAlpha:1];self.showTemeLab.textColor = [UIColor colorWithHexString:@"#767676"];}}else{self.showTimeView.layer.borderWidth = 0;self.showTimeView.backgroundColor = [UIColor colorWithHexString:@"F9F9F9" withAlpha:1];self.showTemeLab.textColor = [UIColor colorWithHexString:@"#767676" withAlpha:0.6];}}@end

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

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

相关文章

什么样的内外网文档摆渡,可以实现安全高效传输?

内外网文档摆渡通常指的是在内网(公司或组织的内部网络)和外网(如互联网)之间安全地传输文件的过程。这个过程需要特别注意安全性,因为内网往往包含敏感数据,直接连接内网和外网可能会带来安全风险。因此会…

设计模式——终止模式之两阶段终止模式

文章目录 1. 错误思路2. 两阶段终止模式2.1 利用 isInterrupted2.2 利用停止标记interrupt-打断park Two Phase Termination 在一个线程 T1 中如何“优雅”终止线程 T2?这里的【优雅】指的是给 T2 一个料理后事的机会。 1. 错误思路 使用线程对象的 stop() 方法停…

GEM TSU Interface Details and IEEE 1588 Support

摘要:Xilinx ZNYQ ULTRASCALE MPSOC的GEM和1588的使用 对于FPGA来说,只需要勾选一些znyq的配置就行了,其余的都是软件的工作; 所有配置都勾选之后,最终会露出来的接口如下: GEM需要勾选的配置如下&#xf…

15.Blender Eevee和Cycles渲染引擎对比

初步介绍 Eevee是实时渲染的引擎,会省略一些解算方式,尤其对光线和阴影 Cycles会考虑这些因素,所以会对光线和阴影的表达更加真实,有一个实时光线追踪的功能 Cycles渲染完之后,每移动一次画面,都会重新渲染…

政安晨:【Keras机器学习示例演绎】(十九)—— 可视化网络学习内容

目录 简介 设置 建立特征提取模型 设置梯度上升过程 设置端到端滤波器可视化回路 可视化目标层中的前 64 个滤波器 政安晨的个人主页:政安晨 欢迎 👍点赞✍评论⭐收藏 收录专栏: TensorFlow与Keras机器学习实战 希望政安晨的博客能够对您有所裨益&…

基于Rust的多线程 Web 服务器

构建多线程 Web 服务器 在 socket 上监听 TCP 连接解析少量的 HTTP 请求创建一个合适的 HTTP 响应使用线程池改进服务器的吞吐量优雅的停机和清理注意:并不是最佳实践 创建项目 ~/rust ➜ cargo new helloCreated binary (application) hello package~/rust ➜ma…

kaggle之皮肤癌数据的深度学习测试

kaggle之皮肤癌数据的深度学习测试 近期一直在肝深度学习 很久之前,曾经上手搞过一段时间的深度学习,似乎是做轮胎花纹的识别,当初用的是TensorFlow,CPU版本的,但已经很长时间都没弄过了 现在因为各种原因&#xff…

全面解析平台工程与 DevOps 的区别与联系

平台工程的概念非常流行,但很多开发人员仍然不清楚它是如何实际运作的,这是非常正常的。 平台工程是与 DevOps 并行吗?还是可以相互替代?或者 DevOps 和平台工程是两个完全不同的概念? 一种比较容易将两者区分开来的方…

Nginx(三): 项目实战之conf

conf文件详解 #user nobody; # 设置了Nginx的工作进程数。这里设置为1,表示只有一个工作进程。通常在多核CPU的服务器上,可以设置为与CPU核心数相等的值以提高性能 worker_processes 1;# 设置了Nginx工作进程的最大文件打开数量限制。这里设置为65535…

打包的意义 作用等前端概念集合 webpack基础配置等

基础网页是什么? 在学校最基础的三剑客 原生JS CSS H5就可以开发静态网页了 对于浏览器而言也能识别这些基础的文件和语法,真正的所见即所得,非常直接。 为什么要使用框架库? 对于常用的前端框架而言,无论是Vue Rea…

Unity和iOS 原生专题一 unity打包设置C#设置 Xcode添加OTHER_LDFLAGS和Info.plist设置

一、 获取 PBXProject PBXProject的很多操作都是通过guid的 var pbxProject new PBXProject(); 二 、获取projectPath var projectPath PBXProject.GetPBXProjectPath(iosProjectPath); 三 、读取pbxProject 文件 pbxProject.ReadFromFile(projectPath); 四 、 读取Uni…

普通屏幕已过时?裸眼3D屏幕显示效果更胜一筹!

随着多媒体技术的迅猛进步,我们日常生活中的内容展现方式,已经经历了前所未有的变革。在这其中,裸眼3D屏幕的应用,无疑是最为引人注目的亮点,它相较于传统屏幕,在显示效果上展现出了鲜明的优势,…

RGB灯珠的控制-单片机通用模板

RGB灯珠的控制-单片机通用模板 一、RGB控制的原理二、RGB.c的实现三、RGB.h的实现四、color色彩空间变换以及控制渐变一、RGB控制的原理 ①通过IO发送脉冲识别0/1编码,组合24Bit的RGB数据,从而控制RGB;②每个RGB灯珠通过DIN、DOU进行级联起来;③通过HSV色彩转换成RGB从而控…

ArcGIS批量寻找图层要素中的空洞

空洞指的是图层中被要素包围所形成的没有被要素覆盖的地方,当图层要素数量非常庞大时,寻找这些空洞就不能一个一个的通过目测去寻找了,需要通过使用工具来实现这一目标。 一、【要素转线】工具 利用【要素转线】工具可以将空洞同图层要素处于…

【触摸案例-多点触摸的案例 Objective-C语言】

一、我们来做这个多点触摸的案例 1.首先呢,按着这个option键啊,可以模拟多点触摸, 然后呢,再去怎么着去画圈儿, 它这个里边就会产生一个imageView,跟着你去变,会有这么一个效果, 那么,首先啊,我们新建一个项目, Name:03-多点触摸的案例 1)首先,我们把控制器的v…

Xcode for Mac:强大易用的集成开发环境

Xcode for Mac是一款专为苹果开发者打造的集成开发环境(IDE),它集成了代码编辑器、编译器、调试器等一系列开发工具,让开发者能够在同一界面内完成应用的开发、测试和调试工作。 Xcode for Mac v15.2正式版下载 Xcode支持多种编程…

【OpenCV】(一)wechat_qrcode检测二维码

一、注意: opencv-4.8.0之前的版本wechat_qrcode检测二维码是矩形检测; opencv-4.8.0的版本wechat_qrcode检测二维码是关键点检测; 二、C代码 代码目前是通用的(仅在opencv-4.5.5、opencv-4.8.1上测试过)&#xff1…

ShardingSphere 5.x 系列【25】 数据分片原理之 SQL 解析

有道无术,术尚可求,有术无道,止于术。 本系列Spring Boot 版本 3.1.0 本系列ShardingSphere 版本 5.4.0 源码地址:https://gitee.com/pearl-organization/study-sharding-sphere-demo 文章目录 1. 分片执行流程1.1 Simple Push Down1.2 SQL Federation2. SQL 解析2.1 解析…

力扣700,二叉搜索树中的搜索

700. 二叉搜索树中的搜索 - 力扣(LeetCode) 法1,递归 给定二叉搜索树(BST)的根节点 root 和一个整数值 val。 你需要在 BST 中找到节点值等于 val 的节点。 返回以该节点为根的子树。 如果节点不存在,则返…

道可云元宇宙每日资讯|苹果推出开放语言模型OpenELM

道可云元宇宙每日简报(2024年4月26日)讯,今日元宇宙新鲜事有: 工信部发布中关村园区建设方案:加快突破元宇宙核心技术 4 月 25 日,工业和信息化部、科学技术部、北京市人民政府印发了《中关村世界领先科技…