NSLayoutConstraint

避坑指南:在海思NNIE上部署YOLOv5模型,从wk文件生成到RuyiStudio调试的全流程解析 本文详细解析了在海思NNIE上部署YOLOv5模型的全流程,包括从wk文件生成到RuyiStudio调试的关键步骤。通过实战经验分享,帮助开发者规避模型转换中的层兼容性校验、量化精度损失等常见问题,提升部署效率。特别针对海思芯片的NNIE加速引擎优化,提供了量化校准、内存管理等实用技巧。 阅读详情

NSLayoutConstraint-代码实现自动布局的函数用法说明  

2014-04-07 01:29:13|  分类: ios|举报|字号 订阅


1
2
3
4
5
6
7
[NSLayoutConstraint constraintWithItem:(id)item
                              attribute:(NSLayoutAttribute)attribute
                              relatedBy:(NSLayoutRelation)relation
                                 toItem:(id)otherItem
                              attribute:(NSLayoutAttribute)otherAttribute
                             multiplier:(CGFloat)multiplier
                               constant:(CGFloat)constant]



参数说明:

第一个参数:指定约束左边的视图view1

第二个参数:指定view1的属性attr1,具体属性见文末。

第三个参数:指定左右两边的视图的关系relation,具体关系见文末。

第四个参数:指定约束右边的视图view2

第五个参数:指定view2的属性attr2,具体属性见文末。

第六个参数:指定一个与view2属性相乘的乘数multiplier

第七个参数:指定一个与view2属性相加的浮点数constant


这个函数的对照公式为:

view1.attr1 <relation> view2.attr2 * multiplier + constant


注意:

1.如果你想设置的约束里不需要第二个view,要将第四个参数设为nil,第五个参数设为NSLayoutAttributeNotAnAttribute


举例:

1
2
3
4
5
6
7
[NSLayoutConstraint constraintWithItem:view1
                              attribute:NSLayoutAttributeLeft
                              relatedBy:NSLayoutRelationEqual
                                 toItem:view2
                              attribute:NSLayoutAttributeRight
                             multiplier:1
                               constant:10]


翻译过来就是:view1的左侧,在,view2的右侧,再多10个点,的地方。


附视图的属性和关系的值:


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
typedef  NS_ENUM(NSInteger, NSLayoutRelation) {
     NSLayoutRelationLessThanOrEqual = -1,           //小于等于
     NSLayoutRelationEqual = 0,                      //等于
     NSLayoutRelationGreaterThanOrEqual = 1,         //大于等于
};
typedef  NS_ENUM(NSInteger, NSLayoutAttribute) {
     NSLayoutAttributeLeft = 1,                      //左侧
     NSLayoutAttributeRight,                         //右侧
     NSLayoutAttributeTop,                           //上方
     NSLayoutAttributeBottom,                        //下方
     NSLayoutAttributeLeading,                       //首部
     NSLayoutAttributeTrailing,                      //尾部
     NSLayoutAttributeWidth,                         //宽度
     NSLayoutAttributeHeight,                        //高度
     NSLayoutAttributeCenterX,                       //X轴中心
     NSLayoutAttributeCenterY,                       //Y轴中心
     NSLayoutAttributeBaseline,                      //文本底标线
                                                                                                                                                    
     NSLayoutAttributeNotAnAttribute = 0             //没有属性
};


NSLayoutAttributeLeft/NSLayoutAttributeRight 和NSLayoutAttributeLeading/NSLayoutAttributeTrailing的区别是left/right永远是指左右,而leading/trailing在某些从右至左习惯的地区会变成,leading是右边,trailing是左边。



屏幕兼容的问题

为了让我们的应用在不容尺寸的屏幕下都能 “正常”的表示,我们尽量不要把数据写死。

大多数可视元素都是一个矩形区域,当然这个矩形区域有坐标的,我们有了这个区域坐标就能确定可视元素的现实位置了。

但是iphone5 和以前的屏幕不一样了,在以前的设备中,我们可以添加一个 xx.@2x.png 来适应retina屏幕,但是iphoen5咋办呢?

ios 引入了 Auto Layout 的东东,这个要和UIViewAutoresizing 区分下。

看下面代码

- (void)viewDidLoad
{
    [super viewDidLoad];
        
    UIView *aView = [[UIView alloc] init];
    aView.backgroundColor = [UIColor redColor];

//为了不和autosizing冲突,我们设置No

    [aView setTranslatesAutoresizingMaskIntoConstraints:NO];
    [self.view addSubview:aView];
    
    UIView *bView = [[UIView alloc] init];
    bView.backgroundColor = [UIColor blueColor];
    [bView setTranslatesAutoresizingMaskIntoConstraints:NO];
    [self.view addSubview:bView];
    
    NSDictionary *views = NSDictionaryOfVariableBindings(aView, bView);

//NSDictionaryOfVariableBindings  宏  其实 NSDictionaryOfVariableBindings(v1, v2, v3) 等效于 [NSDictionary dictionaryWithObjectsAndKeys:v1, @"v1", v2, @"v2", v3, @"v3", nil];    
    [self.view addConstraints:
    [NSLayoutConstraint constraintsWithVisualFormat:@"H:|-(>=50)-[aView(100)]"
                                             options:0
                                             metrics:nil
                                               views:views]];
    
    [self.view addConstraints:
     [NSLayoutConstraint constraintsWithVisualFormat:@"V:|-(>=100)-[aView(50)]"
                                             options:0
                                             metrics:nil
                                               views:views]];
   
    [self.view addConstraints:
     [NSLayoutConstraint constraintsWithVisualFormat:@"H:[bView(==aView)]"
                                             options:0
                                             metrics:nil
                                               views:views]];
    [self.view addConstraints:
     [NSLayoutConstraint constraintsWithVisualFormat:@"V:[bView(==aView)]"
                                             options:0
                                             metrics:nil
                                               views:views]];
    
    [self.view addConstraint:
     [NSLayoutConstraint constraintWithItem:bView
                                  attribute:NSLayoutAttributeLeft
                                  relatedBy:NSLayoutRelationEqual
                                     toItem:aView
                                  attribute:NSLayoutAttributeRight
                                 multiplier:1
                                   constant:10]];
    //添加一个限制  等效于 bView.frame.origin.x  = (aView.frame.origin.x +aView.frame.size.width)  * 1  + 10,好像是这样的!个人觉得!

  它是一种依赖关系,bView依赖aView,这样就算aView变了,bView也会跟着变换。
    [self.view addConstraint:
     [NSLayoutConstraint constraintWithItem:bView
                                  attribute:NSLayoutAttributeTop
                                  relatedBy:NSLayoutRelationEqual
                                     toItem:aView
                                  attribute:NSLayoutAttributeTop
                                 multiplier:1
                                   constant:0]];
    
    [aView release];
    [bView release];
}




constraintWithItem:attribute:relatedBy:toItem:attribute:multiplier:constant:

Create a constraint of the form "view1.attr1 <relation> view2.attr2 * multiplier + constant".

属性


最后的结果就是 “view1.attr1  <       >=    或者 ==   或者    <=       >  view2.attr2 * multiplier + constant”

泛微OA E9文档管理优化:临时文件清理与存储配置指南 本文深入解析了泛微OA E9系统性能下降的常见原因——临时文件堆积,并提供了完整的优化配置指南。文章详细介绍了临时文件的产生机制,并手把手指导管理员如何通过修改存储路径、调整保留时间、设置白名单等关键配置,有效清理与管理系统临时文件,从而释放存储空间,提升系统运行效率与稳定性。 阅读详情

相关推荐

Duilib的简单使用(五、DuiDesigner/DuiEditor的下载编译)

一、前言 在Duilib的简单使用(一、duilib demo)中我们介绍了利用duilib简单的构造一个项目 在Duilib的简单使用(二、xml实现界面与业务分离)中我们介绍了XML在duilib中的使用 在Duilib的简单使用(三、界面逻辑交互)中我们已经知道如何简单的进行界面的交互 在Duilib的简单使用(四、换肤)中,我们提了一下Duilib强大的一键换肤功能。 通过之前的说明,我们知道duilib是通过xml来分离界面和业务逻辑的,但是xml如果不能预览,那每次敲一个再运行一下看看效果,这不

LyRics1996的博客 2884

NSLayoutConstraint-代码实现自动布局的函数用法说明

1 2 3 4 5 6 7 [NSLayoutConstraint constraintWithItem:(id)item                              attribute:(NSLayoutAttribute)attribute                              relate

u014014449的专栏 1002

MAC 青花瓷(Charles)爪机HTTPS 抓包

前段时间跟之前的产品小姐姐聊天,小姐姐说开发让她抓包帮忙看下数据,然而自己又不会,那就来写一篇简易版的教程 冲冲冲! 手上只有mac电脑跟iPhone手机,只做苹果手机的抓包,android7.0以上版本也没法通过正常的抓htts的包,让安卓开发装个后门吧,不是安卓开发并不知道是啥,连上USB之后访问chrome://inspect/#devices就能很简单的抓包 一、准备工具等 青花瓷...

Promise的博客 1612

iOS学习——AutoLayout中利用 NSLayoutConstraint设置相对布局

没有太多要说的,只是最近项目要结了,所以有些时间来做做笔记。 AutoLayout给我的感觉就是充分利用了布局的相对性:对于一个新控件(item1),我们要在界面中确定它的位置,但是需要保证他和其他控件(item2)保持一定的关系,比如item1一定要在item2上边20个像素点的位置,或者item1的宽度是item2的一半。通过[item1 setFrame:CGRectMake(x,y,wi

锰酸钾拌饭的博客 1101

Markdown编辑器介绍

这篇文章介绍了Markdown编辑器的功能和使用方法。主要内容包括:Markdown的基本语法如标题、列表、链接插入等;新增功能如图片拖拽、数学公式支持、甘特图和UML图表绘制;常用快捷键说明;以及文本导出导入操作。文章详细说明了如何通过Markdown语法实现文本格式化、代码高亮、表格创建等功能,并提供了多种图表绘制的语法示例,帮助用户更好地利用Markdown编辑器进行写作和内容创作。

soso1968的博客 1178

手把手教你用Python+Playwright实现抖音/B站/视频号三平台自动上传(附完整配置流程)

本文详细介绍了如何使用Python和Playwright构建一个多平台视频自动化上传系统,涵盖抖音、B站和视频号三大平台。文章从环境搭建、身份验证持久化、平台特异性上传引擎设计到任务调度与错误处理,提供了完整的配置流程和实战代码,帮助开发者实现高效、稳定的批量上传功能。

weixin_29294975的博客 1144

iOS自动布局NSLayoutConstraint

iOS自动布局NSLayoutConstraint (1)自动布局使用可视化语言:VFL(Visual Format Language) [NSLayoutConstraint constraintsWithVisualFormat:@"H:|-20@500-[_view1(==_view2)]-space-[_view2(==_view1)]-40-|" options:NSLayoutFormatDirectionLeftToRight metrics:@{@"space":@20} views:NS

xuyushiguang的博客 507

024、反激变换器的短路保护设计

本文详细探讨了反激变换器短路保护的设计要点与实践经验。作者通过实际案例分析了短路时反激拓扑的电流特性,指出初级峰值电流限制是最基础的保护手段,但需配合打嗝模式使用。文章重点剖析了打嗝模式设计的三个关键陷阱:频率设定、退出条件和软启动衔接。同时强调次级侧辅助保护、变压器参数优化、环路响应协调的重要性,并比较了自恢复与锁死方案的适用场景。最后提出实测验证的四个关键点和设计经验:不盲信芯片手册、保护电路独立设计、充分留有余量、进行破坏性测试。全文以工程实践为导向,为反激电源的可靠短路保护提供了系统性解决方案。

Jack010169的博客 237

NSLayoutConstrain类参考(翻译)未完待续···

继承    NSObject 附和    NSAnimatablePropertyContainer         NSObject(NSObject) 框架    /System/Library/Framework/AppKit.framework 有效性   OS X 10.7 或者更高版本 指导手册  Auto Layout Guide 声明    NS

iOS 移动开发 706

AI赋能合同审查:构建租赁合同智能审核系统的全流程解析

在商业地产、设备租赁等场景中,合同审核效率直接影响业务流转速度。传统人工审核存在三大痛点:审核周期长(平均2-3个工作日)、合规风险高(条款遗漏率约15%)、人力成本居高不下。智能审核系统可将审核时间压缩至秒级,风险识别准确率提升至98%以上。

理论都是虚的,代码才是王道。 1355

【数据分析】R语言分段结构方程模型手把手教程(Piecewise Structural Equation Model)

分段结构方程模型(Piecewise Structural Equation Model, SEM)是一种用于分析变量之间因果关系的统计方法。它通过将复杂的因果关系分解为多个简单的线性模型来评估变量之间的直接和间接效应。与传统的结构方程模型(SEM)不同,分段结构方程模型不需要假设数据的多变量正态分布,因此在处理非正态数据时更为灵活。

专注生信领域 2646

iOS 通过代码添加约束之NSLayoutConstraint

什么是NSLayoutConstraint? 在xib中,我们可以用拖拽约束的方式来给空间添加约束条件,但是如果控件过多,则整个xib文件中的线条会变得混乱不堪,虽然苹果在极力推荐可视化的加约束方式,但是还是给我们提供了代码的方式来添加约束:NSLayoutConstraint。 如何使用NSLayoutConstraint? 在使用NSLayoutConstraint前,我们需

王颜华的博客 1175

Skills入门学习路线

简单来说,Skills就像是给Claude准备的”插件包"或”工具箱”。它是一个集合,里面装了特定的操作指令(Instructions)、可执行脚本(Scripts)和相关素材(Resources)。2025 年 10 月中旬,Anthropic 正式发布 Claude Skills。两个月后,Agent Skills 作为开放标准被进一步发布,意在引导一个新的 AI Agent 开发生态。OpenAI、Github、VS Code、Cursor 均已跟进。为了更好的理解,你可以把。

十二测试录 1097

NSLayoutConstraint使用

NSLayoutConstraint类是用来约束元素位置、大小的类别,可以用来适配不同屏幕和手机横屏竖屏,使界面元素在这些不同屏幕上显示的相对位置统一。NSLayoutConstraint有两个构造函数+(instancetype)constraintWithItem:(id) attribute:(NSLayoutAttribute) relatedBy:(NSLayoutRelation) to

SakuraBurial的专栏 842

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

NSLayoutConstraint 详解

self.view.translatesAutoresizingMaskIntoConstraints = false; let leftView = UILabel(); leftView.backgroundColor = UIColor.redColor(); leftView.translatesAutoresizingMaskIntoCon

海阔天空的专栏 1235

ssm框架搭建

这个是一个在idea上成功跑起来的ssm框架项目,保存在这里方便以后使用直接下载

NSLayoutConstraint实例详解

NSLayoutConstraint 是一个很好的解决iphone和ipad适配问题,下面通过实例来简单的介绍一下: self.view.translatesAutoresizingMaskIntoConstraints = false; let leftView = UILabel(); leftView.backgroundColor = UICo

海阔天空的专栏 1390

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

告别AutoLayout痛点:NSLayoutConstraint优雅布局指南

你是否还在为AutoLayout的警告抓狂?是否曾因约束冲突导致界面错乱?本文将带你掌握NSLayoutConstraint(自动布局约束)的核心用法,用符合[官方风格指南](https://link.gitcode.com/i/e5a983546834a03ab5811146101c44bd)的方式构建灵活可靠的iOS界面。读完你将学会:3种创建约束的方法对比、约束冲突调试技巧、以及如何用代码实...

gitblog_00530的博客 849

Swift - 代码创建NSLayoutConstraint布局

NSLayoutConstraint参数说明: /** * 创建约束 NSLayoutConstraint 参数 说明: * item 自己 * attribute * relatedBy 大于等于 小于等于 等于 ... * toItem 另外一个控件 * attribute 另一个控件的属性 * multiplier 乘以多少 * constant : 加上多少 * NSL

gongyuhonglou的博客 592

NSLayoutConstraint 使用

XXX.translatesAutoresizingMaskIntoConstraints = NO; [self addConstraints:@[ [NSLayoutConstraint constraintWithItem:XXX ...

敛柒的博客 358

NSLayoutConstraint.constraintsWithVisualFormat详解,以及AlignAllCenterY

NSLayoutConstraint.constraintsWithVisualFormat详解,以及AlignAllCenterY 转载2015-07-08 18:02:02 鉴于苹果官方文档的解释很多人(包括我)都没看懂,今天我详细的实验了一下,得出的结论做个记录,欢迎大神们更正。 首先看一下官方文档的解释 format 参数是一个 String,...

dengji2627的博客 825

IOS之NSLayoutConstraint布局约束详解

IOS 布局约束 小白的福音 NSLayoutConstraint

watertekhqx的博客 3476

NSLayoutConstraint-2

1 2 3 4 5 6 7 [NSLayoutConstraint constraintWithItem:(id)item                              attribute:(NSLayoutAttribute)attribute                              relatedB

code life 5520

Swift-- NSLayoutConstraint

NSLayoutConstraint iOS自带的布局类, 一般我们在XIb中给一个空间进行布局,上左下右各是多少可以随意设置,而不用Xib用代码怎么写,写法如下: view.translatesAutoresizingMaskIntoConstraints = false //关闭AutoResizing 这种布局方式早就不用了,需要关闭 [ remot...

SoftwareDoger的博客 661

iOS NSLayoutConstraint priority

欢迎到个人博客: liumh.com查看本文。本文为原创,未经允许勿转载使用 Storyboard 时,通常情况下,可能你不会去关心 NSLayoutConstraint 的 priority 属性,使用 Storyboard 提供的默认值就能达到要求。但是最近遇到对 UILabel 的如下布局要求时,就需要涉及对 priority 的修改。如上所示,我们期望 UILabel 显示字符串较短时,以内

CaryaLiu的专栏 4042

AutoLayout - NSLayoutConstraint

什么是NSLayoutConstraint NSLayoutConstraint由名字翻译过去就是布局约束。该类是表示用户界面上两个对象之间的布局关系,并且该关系必须满足基本约束的布局系统。 解析约束(Constraint) 布局视图(view)定义为一系列的线性方程,每一个约束(constraint)都代表一个方程,格式如下: 上面的约束表示RedView的左边距(left或

欢迎来到Jack的程序世界 597
上一篇: iOS XMPP框架学习
下一篇: constraintsWithVisualFormat
yesjava
博客等级 码龄19年 69粉丝 153原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值