【AutoLayout案例07-如何通过代码添加约束 Objective-C语言】

news2024/11/26 15:27:34

一、那么,接下来,我们就给大家介绍一下,如何通过代码,来实现这个AutoLayout

通知

1.咱们之前是不是都是通过,storyboard、来拖、拉、拽、的方式实现的吧

现在给大家介绍一下,如何通过代码,来实现

在继续介绍,如何通过代码,来实现AutoLayout之前呢,

我们先要给大家补充一个知识,就是我们添加约束的时候,是把这个约束添加给谁了

通知

这个知识,要给大家补充一下

好,来看

通知

那么,我先把这个,给大家关掉,来,看一下

我新建一个项目

通知

选择File-New-Project

通知

选择这个Single View Application

为一个控件,增加约束,这个约束,是增加给谁了,这个要注意

通知

Name:009添加约束规则

注意看,打开我们这个storyboard,我在这里拽一个什么啊,拽一个按钮吧

通知

拽一个按钮

通知

拽一个按钮,然后呢,设一下这个按钮的背景色

通知

设一个红色吧

通知

好,然后,接下来,我是不是要给这个按钮,增加约束,

这个按钮,现在是不是一个约束也没有

好,我现在给这个按钮增加一下约束,约束一下这个按钮的高和宽

通知

约束按钮的宽,是100

约束按钮的高,是100

通知

然后呢,点一下增加

增加两个约束,好,一增加

通知

然后呢,这个按钮,是不是先给它增加了一个高和宽了吧

先别给它去掉那个错误的警告

注意,刚才我仅仅是给按钮约束了一个高和宽

然后,我们看一下,左边,这个场景里面,Scene,里面

通知

右边这个控制器,叫一个故事板,左边这个叫一个场景

一个故事、一个场景

OK,这个场景,场景里面,看一下这个按钮,按钮里面,是不是有一个Constraints了

通知

约束吧,约束里面呢

通知

是不是有一个高、和宽、这一个约束

也就是说,当我们为一个控件,增加一个约束的时候,

如果说,这个约束,不依赖于其他控件的时候,

什么叫不依赖于其他控件的时候,

你设置这个控件的宽、和高,就是写了吧,高就是写了100,

这个时候,不依赖于其他控件吧

比如说,你设置这个控件的高,等于别的控件的高

这个时候,你设置这个控件的高,是不是依赖于别的控件了

或者说,你设置这个控件,距离父控件左边距离,这个时候,这个约束,是不是也依赖于父控件了,要用到父控件啊

就是说,当你为控件设置一个约束,不依赖于别的控件的时候,这个时候,这个约束是,增加到这个控件自己上

通知

是不是增加到这个控件自己上的约束啊

那么,这是第一个

1)当设置一个约束,不依赖于任何其他控件的时候,这个约束,会增加到当前控件的自己身上

OK,这是我们第一个要说的

通知

看看

通知

OK,就是这点,

通知

如果添加的约束和其他控件没有关系,就会添加到自己身上

意思就是说,你这个控件,增加这个约束,不依赖于任何别的控件,

自己就可以写完,比如100,100,高、和宽,都是100

不依赖于别的控件,那么它这个约束,就会增加到控件自己身上

这是第一个

通知

就相当于我们刚才这样,增加高和宽,都是写的100,不依赖于别的控件,那么这个约束,就会增加到这个控件自己的身上

通知

好,再看一下

2)比如说,让这个按钮,注意看,让这个按钮,让它,水平居中对齐、垂直居中对齐

通知

点击增加

注意,这个Constraints

通知

水平居中对齐、垂直居中对齐

通知

通知

注意,这个水平居中对齐、垂直居中对齐

这个约束,是增加到哪儿了

增加到这个按钮的父控件上了吧

通知

是不是,也就是说,当这个约束,是相对于

通知

当设置子控件的一个约束,这个约束,要用到父控件的某个值

这个时候,这个约束,就会增加到,父控件上

通知

OK,把这个警告解决一下

通知

解决,Fix Misplacement

通知

OK

通知

好,这是我们的第二个情况

通知
通知

OK,看一下,

2)如果是父子关系,设置子控件的约束,约束会添加到父控件上

通知

并不会增加到这个子控件上

只有一种情况,会增加到子控件上,就是设置这个控件的约束的时候,它不依赖于任何的控件,自己就能设置,只有这种情况,这个约束,会增加到控件自己身上

那么,比如说,其他情况,

1)第一种情况,设置这个控件的约束,和父控件有关,是父子关系的时候,这个约束,会添加到父控件身上

2)第二种情况,如果是父子关系,设置子控件的约束,约束会添加到父控件上

通知

3)OK,那么,接下来,我们再看第三个

我这里,再来一个按钮

通知

再来一个按钮,

这个按钮

通知

这个按钮叫做Button01

通知
通知

我设置这个按钮(Button01)和这个红色的按钮,让它俩的高和宽相等,让它俩的宽和高,等宽、等高

通知

点击增加

设完以后,注意看,这儿会加东西吗

通知

走一个

通知

增加了没,加了吧

也就是说,当你设置两个兄弟之间,有相互依赖关系的时候,这个依赖关系,也会添加到这两个兄弟的父控件上

这是我们的哪幅图啊,

通知

就是我们的这幅图

通知

当设置两个兄弟之间的依赖的时候,这个兄弟之间的依赖约束,也会添加到父控件上

通知

同一个层级间的约束关系,都会添加到父控件上

通知
通知

更严谨一点儿,应该这么说,

通知

注意看

通知

因为当前我们这个Button

通知

Button和Button01,它俩的父控件,是不是都是这个View啊

它俩的父控件,都是这个View

所以,当你设置它俩相关的关系的时候,它俩之间的关系,这个约束,会添加到它俩共同的父控件下面吧

4)当设置两个

通知

当设置两个控件,它俩相关,设置这个控件,跟这个控件

相关,它俩相关联,那么,这个时候,这个约束,会加到哪儿呢

会加到它俩的共同的父控件上

它的父控件,是这个

通知

它的父控件,是这个

通知

只有这个,是不是才是它俩共同的父控件啊

通知

所以说,当设置两个控件,兄弟控件,它俩的关系的时候,那么,这个时候,它会找到这两个控件共同的父控件,会把约束添加到,它俩的共同的父控件上,

明白了吗,这就是为什么,刚才

通知

设了一堆约束以后,有的约束,在这个按钮下面

通知

有的约束,在这个父控件的下面

通知

咱们刚才写了一堆约束,大部分约束,是不是,都是我们兄弟关系之间的约束

和父子之间的约束

所以说,大部分,是不是都加到这个父控件,控制器View下面,都加到这个地方了

通知

这是这里要给大家补充的,创建约束的时候,这个约束到底是创建到谁上面了,

1)如果说,这个约束,是自己、不依赖于任何一个别人,就是创建到自己身上,

2)如果说,它是兄弟的关系

通知

就创建到它共同的父元素上

3)如果是堂兄弟的关系,

通知

就创建到共同的父控件上

通知

如果是父子关系的话,肯定就直接加到父控件上了

OK,那么,我们为什么要说这个东西呢

我们写代码,通过代码,来创建约束的时候,你创建完的约束,这个约束,是要加到哪个子控件上啊

这个时候,你是不是得知道这个规则啊

1)如果说,这个约束,没有依赖于任何的控件

那么,这个约束,就加到当前控件自己的身上

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

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

相关文章

基于Java+SpringBoot+Vue前后端分离疫苗发布和接种预约系统设计和实现

博主介绍:✌全网粉丝30W,csdn特邀作者、博客专家、CSDN新星计划导师、Java领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌ 🍅文末获取源码联系🍅 👇🏻 精彩专…

前端开发之Element Plus的分页组件el-pagination显示英文转变为中文

前言 在使用element的时候分页提示语句是中文的到了element-plus中式英文的,本文讲解的就是怎样将英文转变为中文 效果图 解决方案 如果你的element-plus版本为2.2.29以下的 import { createApp } from vue import App from ./App.vue import ElementPlus from …

ruoyi-vue-plus 配置邮箱

ruoyi-vue-plus 配置邮箱 📔 千寻简笔记介绍 千寻简笔记已开源,Gitee与GitHub搜索chihiro-notes,包含笔记源文件.md,以及PDF版本方便阅读,且是用了精美主题,阅读体验更佳,如果文章对你有帮助请…

Java实现根据短连接获取1688商品详情数据,1688淘口令接口,1688API接口封装方法

要通过1688的API获取商品详情数据,您可以使用1688开放平台提供的接口来实现。以下是一种使用Java编程语言实现的示例,展示如何通过1688开放平台API获取商品详情属性数据接口: 首先,确保您已注册成为1688开放平台的开发者&#xf…

网络工程师的尽头是……

大家好,我是许公子。 最近工作挺忙,很久没有给你们输出文章了,抽空和大家唠嗑唠嗑。 前两天,一个实习生问了我这个问题: “网络工程师的尽头是什么?” 我当时一下子,脑子空白了,…

stackoverflow问题

Stack Overflow requires external JavaScript from another domain, which is blocked or failed to load. stackoverflow引用了谷歌中被屏ajax.googleapis.com的jquery.min.js文件。“https://ajax.googleapis.com/ajax/libs/jquery/1.12.4/jquery.min.js” 方案1.打开网站…

Viobot算法控制

一.上位机控制 状态反馈在系统反馈出会根据当前系统状态显示。 控制是在操作栏里面的一个选项三个按键。具体的已经在前面一篇基本功能使用及介绍中讲过了。 二.ROS控制 算法的控制我们也整合成了一个ROS msg,具体的msg信息可以查看demo里面的msg包的algo_ctrl.m…

Arduino RGBLED灯 模块学习与使用

Arduino RGBLED灯模块学习与使用 硬件原理制作衍生连接线Mixly程序Arduino程序演示视频 人生如逆旅,我亦是行人。 —— 苏轼江客:时荒 硬件原理 RGBLED灯三个引脚分别控制三个LED灯的亮度,RGB分别是red,green,blue的英文缩写&…

iOS - 资源按需加载 - ODR

一、瘦身技术大图 二、On-Demand Resources 简介 将其保存管理在苹果的服务器,按需使用资源、优化包体积,实现更小的应用程序。ODR 的好处: 应用体积更小,下载更快,提升初次启动速度资源会在后台下载操作系统将会在磁…

《C/C++等级考试(1~8级)历届真题解析》专栏总目录

❤️ 专栏名称:《C/C等级考试(1~8级)历届真题解析》 🌸 专栏介绍:中国电子学会《全国青少年软件编程等级考试》C/C编程(1~8级)历届真题解析。 🚀 订阅专栏:订阅后可阅读专…

【Linux】进程概念,轻松入门【下篇】

目录 1. 基本概念 2. 常见环境变量 常见环境变量指令 (1. PATH (2. HOME (3. SHELL 3.环境变量的组织形式 (1)通过代码如何获取环境变量 (2)普通变量与环境变量的区别 (3&…

第十二届中国PMO大会在京成功召开

8月12-13日,由PMO评论主办,以“拥抱变革 展现PMO力量”为主题的第十二届中国PMO大会在京成功召开。全国项目管理标准化技术委员会俞彪秘书长、《项目管理技术》杂志张星明主编莅临大会并致开幕词,53位来自知名企业的PMO实践精英及业内专家做了…

【某大型攻防演练中 QQ 远程代码执行复现】

目录 前言 漏洞概述 复现过程 修复方式 前言 在最近某全国大型攻防演练中&#xff0c;接近尾声爆出了QQ 0day&#xff0c;攻击者使用QQ版本<9.7.13&#xff0c;存在远程命令执行漏洞&#xff0c;对众多靶标系统进行攻击。漏洞爆出后&#xff0c;就做过一次复现。最近活动…

EXSI技术--SAN组网

(1).SAN概述 存储区域网络(Storage Area Network,SAN)采用网状通道技术,通过FC交换机连接存储阵列和服务器主机,建立专用于数据存储的区域网络。 作为一种专门用于实现存储系统互连的高速网络技术,SAN(存储区域网络)克服了NAS(网络连接存储)中存储吞吐量受底层网络介质限…

【高阶数据结构】哈希表详解

文章目录 前言1. 哈希的概念2. 哈希冲突3. 哈希函数3.1 直接定址法3.2 除留余数法--(常用)3.3 平方取中法--(了解)3.4 折叠法--(了解)3.5 随机数法--(了解)3.6 数学分析法--(了解) 4. 哈希冲突的解决方法及不同方法对应的哈希表实现4.1 闭散列&#xff08;开放定址法&#xff0…

解决win10 wsl子系统安装的ubuntu环境中lsof,netstat命令查看端口没有任何输出的问题

最近有个以前的ssm项目需要在新电脑上运行测试一下&#xff0c;发现需要redis环境&#xff0c;看了官网说&#xff1a;有两种选择&#xff1a; 1. 要么在虚拟机比如vmware安装linux基础环境&#xff0c;然后再安装redis 2. 要么可以利用win10的wsl linux子系统安装ubuntu&…

LNMT与动静分离 (四十八)

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 目录 前言 一、LNMT 二、Nginx高级配置 2.1 location 2.2 rewirte 2.2.1 应用场景 2.2.2 书写位置 三、动静分离 总结 前言 LNMT是一个高级神经机器翻译系统&#xff0c;它使…

【数据结构】队列篇| 超清晰图解和详解:循环队列模拟、用栈实现队列、用队列实现栈

博主简介&#xff1a;努力学习的22级计算机科学与技术本科生一枚&#x1f338;博主主页&#xff1a; 是瑶瑶子啦每日一言&#x1f33c;: 每一个不曾起舞的日子&#xff0c;都是对生命的辜负。——尼采 目录 一、 模拟实现循环队列二、用栈实现队列⭐三、225. 用队列实现栈 一、…

什么是异业联盟呢?异业联盟模式解析

今日给大家分享个新的模式&#xff0c;主要是针对平台要整合实体联盟商家&#xff0c;打造线上异业联盟&#xff0c;为帮助商家及平台引流用户。也让用户获得更多优惠的模式——异业联盟结合联盟卡解决方案。 众所周知&#xff0c;商家联盟 ”是一种着力于本地生活的商业模式&…

pdf怎么压缩到1m以内?分享3个pdf压缩技巧

PDF是我们常用的文件类型&#xff0c;它旨在保留文档原样式和格式&#xff0c;因此通常情况下要比其他文件格式大一些&#xff0c;特别是那些包含了大量图片的PDF文件&#xff0c;文件大小都比较大&#xff0c;给我们的存储和传输带来了困难。 针对过大的PDF文件&#xff0c;想…