当前位置: 首页 > news >正文

ios UI 基础开发一

目录

第一节:基础库

第二节:弹出模拟器的键盘

第三节:模拟器回到桌面

第四节:Viewcontroller 与 View 的关系

第五节:快捷键

第六节:键盘召回

​第七节:启动流程+xcode介绍

 第八节:UIButton的基本使用

代码设置按钮的不同状态的属性

第九节:开启动画

第十节:代码创建UIButton

第十二节:安装模拟器不同的系统 

第十三节:transform 属性

第十四节:UIView 常见的属性

第十五节:从plist 里面读取数据

创建plist 文件

​懒加载

读取plist 文件

第十六节:UIImageView 播放动画

与UIButton的对比

​第十五节:UILabel

自动换行

第十六节:九空格

​获取控件的最大x/y 值 CGRectGetMaxX/Y

 第十七节:xib

字典转model

xib创建 

xib的生命周期

第十八节:状态栏

第十九节:Snippet

​第二十节:NSArray

第二十一节:UIAlertView、UIAlertController、UIAlertViewDelegate

第二十二节:@2x 和 @3x

第二十三节:设置app icon 和 launch screen

第二十四节:UIScrollView

监听滚动事件 UIScrollViewDelegate

UIScrollView缩放

UIScrollView分页、UIPageView

第二十五节:NSTimer

​第二十六节:UITableView、UITableViewCell

设置table View 、UITableViewDelegate

设置UITableViewCell

刷新数据

​滚动到哪一行

第二十七节:重用UITableViewCell

第二十八节:KVC

第二十九节:通过xib 创建UITableViewCell

第三十节:Activity Indicator View

​第三十一节:给table view  添加footer view

第三十二节:dispatch

第三十三节:UITableViewController

第三十三节:通过代码创建UITableViewCell

根据文字的多少,计算lable框的高宽

第三十四节:CGRect的库​

第三十五节:声明的UI控件属性为什么要用weak 属性

第三十六节:UI空间的delegate 属性为什么必须是weak

第三十七节:图片的拉伸方式

第三十八节:UITextFieldView 

设置光标离左边有一段间距

第三十九节:NSNotificationCenter、NSNotification

​监听键盘通知

第四十节:UIDevice

第四十一节:静态单元格

设置header view

折叠header View

刷新数据

第四十二节:自动布局

用代码设置约束 

创建约束动画 


第一节:基础库

按住option 键拖动控件,能快捷复制控件

第二节:弹出模拟器的键盘

command+k

第三节:模拟器回到桌面

command+shift+h

第四节:Viewcontroller 与 View 的关系

ViewController 用来管理View,View 只是用来显示数据的

第五节:快捷键

按住control 键,从storyboard 把控件往类extension里面拖拽,会生成对应的连接,并且会生成对应方法的实现

属性选择Outlet,按钮事件是Action

第六节:键盘召回

谁唤醒的键盘,谁就是第一响应者,召回的时候,就是切换第一响应者

第七节:启动流程+xcode介绍

首先查看启动哪个launch screen

launch screen 是启动画面之前的图

 然后启动哪个view controller ,有箭头的就是初始化的view controller,如果有多个vc,可以拖拽 

  启动哪个View controller 的那个类

 第八节:UIButton的基本使用

当一个oc对象,里面有一个属性是结构体,必须先获取到,改了再赋值,因为是值类型,不能直接调用setter 方法

 Frame 是左上角的位置,Center 是物体的中心点坐标,bound 是以中心点的高宽

image 和 bgimage 的区别:bg 会随着按钮大小变化而变化,image不会 

代码设置按钮的不同状态的属性

一定是一个方法,不能通过.语法去设置,因为该方法一定至少有2个参数,一个是属性,一个是状态

 

第九节:开启动画

 中间的执行的动画的代码,是最终的赋值代码

第十节:代码创建UIButton

 不同的按钮有不同的state,所以设置的时候要根据不同的state 设置属性,比如color,text

第十二节:安装模拟器不同的系统 

SDK的位置:

/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/

第十三节:transform 属性

transform 的坐标系原点,是原始的坐标,就是变动之前的都是0,是本身的坐标系,和center一样

 

第十四节:UIView 常见的属性

 

第十五节:从plist 里面读取数据
创建plist 文件
 懒加载

读取plist 文件

 

第十六节:UIImageView 播放动画

 

imageNamed和imageWithContentFile的区别是:  一个使用缓存的方式,一个不是用缓存的方式 

imageWithContentFile 传入的路径参数,不能放在assets 文件夹下,要另新建一个Group,把图片放进去

 copy  和 strong  都是强引用

与UIButton的对比
 第十五节:UILabel
自动换行

第十六节:九空格
 获取控件的最大x/y 值 CGRectGetMaxX/Y

 第十七节:xib
字典转model

xib创建 

类似unity 里面的prefab ,重复使用 UI界面的

 

xib的生命周期

第十八节:状态栏

 

第十九节:Snippet

选中代码,右键,create code snippet,<#内容#> 这样会高亮显示,下次创建的时候,自动会高亮显示该内容

 第二十节:NSArray

让数组里面的 object 执行某个方法 makeObjectsPerformSelector

第二十一节:UIAlertView、UIAlertController、UIAlertViewDelegate

索引从0开始 

UIAlertController* alert = [UIAlertController alertControllerWithTitle:@"My Alert"message:@"This is an alert."preferredStyle:UIAlertControllerStyleAlert];UIAlertAction* defaultAction = [UIAlertAction actionWithTitle:@"OK" style:UIAlertActionStyleDefaulthandler:^(UIAlertAction * action) {}];[alert addAction:defaultAction];
[self presentViewController:alert animated:YES completion:nil];
 第二十二节:@2x 和 @3x

为什么有一个点坐标系,因为如果写代码的时候,初始化frame 的时候,如果是像素坐标系,则不同的屏幕上表现得效果不一样,不会适配,而点坐标系,IOS系统 会自动检测对应的像素,从而达到适配效果

第二十三节:设置app icon 和 launch screen

launch screen  的原理:截了一张图,当做屏幕启动图,通过NSHomeDirectory 获取该截图所在地址

第二十四节:UIScrollView

 

监听滚动事件 UIScrollViewDelegate

 

UIScrollView缩放

 

也就是在 viewForZoomingInScrollView 方法返回当前缩放的对象,也就是告诉scroll View 当前缩放的对象,比如 return  self.imageView 

 

UIScrollView分页、UIPageView

 原理:它默认认为UIScrollView的一个宽度为一页

加一半的目的,是为了在大于半页的时候,下面的点 就+1 

第二十五节:NSTimer

 

 content offset  用动画方式滚动

 

问题一:当view 下有两个scroll view,一个用到了nstimer计时器,当拖动scroll View 的时候,nstimer  就停止了

原因:nstimer 的优先级< ui 控件,所以拖动UI 控件的时候 ,UI线程不会去执行nstimer,解决方式,设置nstimer 的优先级和UI一样

第二十六节:UITableView、UITableViewCell

 

 

设置table View 、UITableViewDelegate
 
设置UITableViewCell

 

刷新数据

刷新的原理:把原来的数据删掉,然后再把新数据添加上

滚动到哪一行

第二十七节:重用UITableViewCell

 加个static ,让ID 指针不反复的销毁,创建

类似abcd......对应组的索引

第二十八节:KVC

 根据字典里的键找到对应类对象里的属性,赋值

 

好处:属性名能单独提出来,当个变量 

 

第二十九节:通过xib 创建UITableViewCell

 自定义xib 绑定的类

第三十节:Activity Indicator View

默认不转圈

 第三十一节:给table view  添加footer view

规范:

  • 协议就在在interface里面,这样导入一个头文件,就都导入了
  • 至少有一个参数,就是该控件自己
  • 方法名以本类开头

第三十二节:dispatch

第三十三节:UITableViewController

是View controller 和 UITableView 的结合体,默认设置好了协议和数据源,默认有tableview属性

创建一个类继承自 UITableViewController,会自动继承了协议,并实现了协议方法

第三十三节:通过代码创建UITableViewCell

重写initWithStyle方法,并把创建的View  添加到contentView里面

根据文字的多少,计算lable框的高宽

 第三十四节:CGRect的库
第三十五节:声明的UI控件属性为什么要用weak 属性

因为在用storyboard 的时候,其实是执行了代码 addsubview 把view 添加到了vc 里面,已经有一个强指针引用了,如果通过拖线创建属性的时候,再使用strong,这样就会有两个强指针指向该控件了,这样没有问题,但没必要。

第三十六节:UI空间的delegate 属性为什么必须是weak

第三十七节:图片的拉伸方式

第三十八节:UITextFieldView 
设置光标离左边有一段间距

只需要让左边有一个view,这样进来的时候光标就在view右边

第三十九节:NSNotificationCenter、NSNotification

通知都是相对于对象的,不管发送还是监听,通过NSNotificationCenter去操作

 监听键盘通知

 

第四十节:UIDevice

 

第四十一节:静态单元格

 

 

设置header view
 
折叠header View

刷新数据

第四十二节:自动布局

 

用代码设置约束 

创建约束动画 

相关文章:

ios UI 基础开发一

目录 第一节&#xff1a;基础库 第二节&#xff1a;弹出模拟器的键盘 第三节&#xff1a;模拟器回到桌面 第四节&#xff1a;Viewcontroller 与 View 的关系 第五节&#xff1a;快捷键 第六节&#xff1a;键盘召回 ​第七节&#xff1a;启动流程xcode介绍 第八节&#xf…...

echarts一些配置项的使用

前言:我是自己最近写项目用到的,我做个整理; 一. 基本使用 1.具有大小(宽高)的div ,id唯一; 例如: <div id"crewEchart"></div> 2.在项目中引入: import * as echarts from "echarts"; 3.写一个关于他的方法,在mounted的时候调用: moun…...

python yaml库:safe_load()(安全解析函数,解析yaml)(防止yaml文件中包含恶意代码)

文章目录 Python YAML: 使用 safe_load 进行安全解析什么是 safe_load?如何使用 safe_load?为什么选择 safe_load 而非 load? Python YAML: 使用 safe_load 进行安全解析 YAML (YAML Ain’t Markup Language) 是一种人类可读的数据序列化标准。它被广泛用于配置文件、多语言…...

小程序:下拉刷新+上拉加载+自定义导航栏

下拉刷新 &#xff1a; <scroll-view scroll-y"true" 允许纵向滚动 refresher-enabled"true" 开启自定义下拉刷新 默认为false :refresher-triggered&quo…...

判断两个二叉树是否相等

bool isSameTree(struct TreeNode* p, struct TreeNode* q) {//两个都为空if(pNULL&&qNULL){return true;}//有一个为空if(pNULL||qNULL){return false;}//两个不为空&#xff0c;但值不相同if(p->val!q->val){return false;}//值相同return isSameTree(p->le…...

springcloud----检索中间件 ElasticSearch 分布式场景的运用

如果对es的基础知识有不了解的可以看 es看这个文章就会使用了 1.分布式集群场景下的使用 单机的elasticsearch做数据存储&#xff0c;必然面临两个问题&#xff1a;海量数据存储问题、单点故障问题。 海量数据存储问题&#xff1a;将索引库从逻辑上拆分为N个分片&#xff08…...

qt创建线程类并实现通信 C++

需求描述&#xff1a; 通过VS创建了一个QT项目&#xff0c;我需要一个线程类去实时获取设备取流的图像&#xff0c;并将图像传给qt的类用于在QLabel上显示。 实现&#xff1a; 头文件&#xff1a; //include ...省略//Qt界面的类Your_Project class Your_Project : public Q…...

【elasticsearch】使用自建证书搭建elasticsearch8.0.1集群

概述 本文将分享使用自建证书搭建加密的es集群&#xff0c;如果想使用rpm包安装&#xff0c;前期的搭建过程请参考上面一篇文章https://blog.csdn.net/margu_168/article/details/133344675。后续的操作与使用tar包安装的类似&#xff0c;只是需要注意目录的区别。 es8.0.1安…...

一篇文章带你用动态规划解决打家劫舍问题

动态规划的解题步骤可以分为以下五步&#xff0c;大家先好好记住 1.创建dp数组以及明确dp数组下标的含义 2.制定递推公式 3.初始化 4.遍历顺序 5.验证结果 根据打家劫舍的题意&#xff1a;两个直接相连的房子在同一天晚上被打劫会触发警报 所以我们制定出核心策略——偷东…...

idea中导入eclipse的javaweb项目——tomact服务(保姆级别)

idea中导入eclipse的javaweb项目——tomact服务&#xff08;保姆级别&#xff09; 1. 导入项目2. Project Settings下的各种配置步骤2.1 检查/修改 jdk 的引入2.2 配置Modules-Dependencies2.2.1 删掉eclipse相关的多余配置2.2.2 删掉jar包2.2.3 添加tomcat的依赖 2.3 配置Libr…...

【开源】给ChatGLM写个,Java对接的SDK

作者&#xff1a;小傅哥 - 百度搜 小傅哥bugstack 博客&#xff1a;bugstack.cn 沉淀、分享、成长&#xff0c;让自己和他人都能有所收获&#xff01;&#x1f604; 大家好&#xff0c;我是技术UP主小傅哥。 清华大学计算机系的超大规模训练模型 ChatGLM-130B 使用效果非常牛&…...

基于Pytest+Allure+Excel的接口自动化测试框架

1. Allure 简介 简介 Allure 框架是一个灵活的、轻量级的、支持多语言的测试报告工具&#xff0c;它不仅以 Web 的方式展示了简介的测试结果&#xff0c;而且允许参与开发过程的每个人可以从日常执行的测试中&#xff0c;最大限度地提取有用信息。 Allure 是由 Java 语言开发的…...

20.2 FMC驱动SDRAM的时序初始化实现及内存测试

继续上一篇的话题&#xff0c;写到SDRAM通过CubeMx配置后&#xff0c;在工程代码编写时直接引用的是我事先写好的时序初始化、内存测试文件&#xff0c;而未对其进行详细的解释&#xff0c;所以本篇文章就来娓娓道来。不多说&#xff0c;开始吧 SDRAM的初始化流程简述 SDRAM初…...

联想电脑一键重装系统Win10操作方法

很多用户都会利用重装系统的方法&#xff0c;来解决系统崩溃、病毒感染等问题。但是&#xff0c;很多新手用户不知道联想电脑Win10系统重装的详细方法步骤&#xff0c;下面小编给大家详细介绍关于联想电脑Win10系统重装的操作方法&#xff0c;帮助大家轻松快速地完成系统的重装…...

Mysql数据库 1.概述

Mysql内容概述 1. Mysql概述 数据库相关概念&#xff1a; 名称 全称 简称 数据库 存储数据的仓库&#xff0c;数据是有组织的进行存储 …...

Qt编程,文件操作、UDP通信

目录 1、文件类 QFile 2、 UPD/TCP网络编程 1、##UDP客户端 2、##UDP服务器端 1、文件类 QFile QFile file(filename); file.exists() file.setFileName(filename1); file.fileName() file.bytesAvailable() file.size() file.copy("2.txt") file1.errorString(…...

Docker 的数据管理和Dockerfile镜像的创建

目录 Docker 的数据管理 管理 Docker 容器中数据的方式 端口映射 容器互联&#xff08;使用centos镜像&#xff09; Docker 镜像的创建 Dockerfile 操作常用的指令 编写 Dockerfile 时格式 Dockerfile 案例 Docker 的数据管理 管理 Docker 容器中数据的方式 管理 Doc…...

[python] 利用 Pydoc 快速生成整个 Python 项目的文档

如何写注释 class MyClass:"""This is a simple example class.Attributes:param1 (int): The first parameter.param2 (str): The second parameter."""def __init__(self, param1, param2):"""The constructor for MyClass.:p…...

Maven 配置指南

目录 一、配置本地存储库 二、配置并行Artifact 解析 三、安全和部署设置 四、将镜像用于存储库 五、Profiles 六、可选配置 七、Settings 八、安全性 九、工具链 Maven配置发生在3个级别&#xff1a; 项目-大多数静态配置发生在pom.xml中安装-这是为Maven安装添加的…...

第十八章 类和对象——多态

一、多态的基本概念 多态是C面向对象三大特性之一 多态分为两类 静态多态: 函数重载 和 运算符重载属于静态多态&#xff0c;复用函数名 动态多态: 派生类和虚函数实现运行时多态 静态多态和动态多态区别&#xff1a; 静态多态的函数地址早绑定 - 编译阶段确定函数地址 动…...

RestClient

什么是RestClient RestClient 是 Elasticsearch 官方提供的 Java 低级 REST 客户端&#xff0c;它允许HTTP与Elasticsearch 集群通信&#xff0c;而无需处理 JSON 序列化/反序列化等底层细节。它是 Elasticsearch Java API 客户端的基础。 RestClient 主要特点 轻量级&#xff…...

【大模型RAG】拍照搜题技术架构速览:三层管道、两级检索、兜底大模型

摘要 拍照搜题系统采用“三层管道&#xff08;多模态 OCR → 语义检索 → 答案渲染&#xff09;、两级检索&#xff08;倒排 BM25 向量 HNSW&#xff09;并以大语言模型兜底”的整体框架&#xff1a; 多模态 OCR 层 将题目图片经过超分、去噪、倾斜校正后&#xff0c;分别用…...

Chapter03-Authentication vulnerabilities

文章目录 1. 身份验证简介1.1 What is authentication1.2 difference between authentication and authorization1.3 身份验证机制失效的原因1.4 身份验证机制失效的影响 2. 基于登录功能的漏洞2.1 密码爆破2.2 用户名枚举2.3 有缺陷的暴力破解防护2.3.1 如果用户登录尝试失败次…...

XCTF-web-easyupload

试了试php&#xff0c;php7&#xff0c;pht&#xff0c;phtml等&#xff0c;都没有用 尝试.user.ini 抓包修改将.user.ini修改为jpg图片 在上传一个123.jpg 用蚁剑连接&#xff0c;得到flag...

TRS收益互换:跨境资本流动的金融创新工具与系统化解决方案

一、TRS收益互换的本质与业务逻辑 &#xff08;一&#xff09;概念解析 TRS&#xff08;Total Return Swap&#xff09;收益互换是一种金融衍生工具&#xff0c;指交易双方约定在未来一定期限内&#xff0c;基于特定资产或指数的表现进行现金流交换的协议。其核心特征包括&am…...

.Net Framework 4/C# 关键字(非常用,持续更新...)

一、is 关键字 is 关键字用于检查对象是否于给定类型兼容,如果兼容将返回 true,如果不兼容则返回 false,在进行类型转换前,可以先使用 is 关键字判断对象是否与指定类型兼容,如果兼容才进行转换,这样的转换是安全的。 例如有:首先创建一个字符串对象,然后将字符串对象隐…...

A2A JS SDK 完整教程:快速入门指南

目录 什么是 A2A JS SDK?A2A JS 安装与设置A2A JS 核心概念创建你的第一个 A2A JS 代理A2A JS 服务端开发A2A JS 客户端使用A2A JS 高级特性A2A JS 最佳实践A2A JS 故障排除 什么是 A2A JS SDK? A2A JS SDK 是一个专为 JavaScript/TypeScript 开发者设计的强大库&#xff…...

招商蛇口 | 执笔CID,启幕低密生活新境

作为中国城市生长的力量&#xff0c;招商蛇口以“美好生活承载者”为使命&#xff0c;深耕全球111座城市&#xff0c;以央企担当匠造时代理想人居。从深圳湾的开拓基因到西安高新CID的战略落子&#xff0c;招商蛇口始终与城市发展同频共振&#xff0c;以建筑诠释对土地与生活的…...

tomcat入门

1 tomcat 是什么 apache开发的web服务器可以为java web程序提供运行环境tomcat是一款高效&#xff0c;稳定&#xff0c;易于使用的web服务器tomcathttp服务器Servlet服务器 2 tomcat 目录介绍 -bin #存放tomcat的脚本 -conf #存放tomcat的配置文件 ---catalina.policy #to…...

libfmt: 现代C++的格式化工具库介绍与酷炫功能

libfmt: 现代C的格式化工具库介绍与酷炫功能 libfmt 是一个开源的C格式化库&#xff0c;提供了高效、安全的文本格式化功能&#xff0c;是C20中引入的std::format的基础实现。它比传统的printf和iostream更安全、更灵活、性能更好。 基本介绍 主要特点 类型安全&#xff1a…...