当前位置: 首页 > 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; 静态多态的函数地址早绑定 - 编译阶段确定函数地址 动…...

HTML 列表、表格、表单

1 列表标签 作用&#xff1a;布局内容排列整齐的区域 列表分类&#xff1a;无序列表、有序列表、定义列表。 例如&#xff1a; 1.1 无序列表 标签&#xff1a;ul 嵌套 li&#xff0c;ul是无序列表&#xff0c;li是列表条目。 注意事项&#xff1a; ul 标签里面只能包裹 li…...

基于Uniapp开发HarmonyOS 5.0旅游应用技术实践

一、技术选型背景 1.跨平台优势 Uniapp采用Vue.js框架&#xff0c;支持"一次开发&#xff0c;多端部署"&#xff0c;可同步生成HarmonyOS、iOS、Android等多平台应用。 2.鸿蒙特性融合 HarmonyOS 5.0的分布式能力与原子化服务&#xff0c;为旅游应用带来&#xf…...

spring:实例工厂方法获取bean

spring处理使用静态工厂方法获取bean实例&#xff0c;也可以通过实例工厂方法获取bean实例。 实例工厂方法步骤如下&#xff1a; 定义实例工厂类&#xff08;Java代码&#xff09;&#xff0c;定义实例工厂&#xff08;xml&#xff09;&#xff0c;定义调用实例工厂&#xff…...

解决本地部署 SmolVLM2 大语言模型运行 flash-attn 报错

出现的问题 安装 flash-attn 会一直卡在 build 那一步或者运行报错 解决办法 是因为你安装的 flash-attn 版本没有对应上&#xff0c;所以报错&#xff0c;到 https://github.com/Dao-AILab/flash-attention/releases 下载对应版本&#xff0c;cu、torch、cp 的版本一定要对…...

Maven 概述、安装、配置、仓库、私服详解

目录 1、Maven 概述 1.1 Maven 的定义 1.2 Maven 解决的问题 1.3 Maven 的核心特性与优势 2、Maven 安装 2.1 下载 Maven 2.2 安装配置 Maven 2.3 测试安装 2.4 修改 Maven 本地仓库的默认路径 3、Maven 配置 3.1 配置本地仓库 3.2 配置 JDK 3.3 IDEA 配置本地 Ma…...

MySQL账号权限管理指南:安全创建账户与精细授权技巧

在MySQL数据库管理中&#xff0c;合理创建用户账号并分配精确权限是保障数据安全的核心环节。直接使用root账号进行所有操作不仅危险且难以审计操作行为。今天我们来全面解析MySQL账号创建与权限分配的专业方法。 一、为何需要创建独立账号&#xff1f; 最小权限原则&#xf…...

处理vxe-table 表尾数据是单独一个接口,表格tableData数据更新后,需要点击两下,表尾才是正确的

修改bug思路&#xff1a; 分别把 tabledata 和 表尾相关数据 console.log() 发现 更新数据先后顺序不对 settimeout延迟查询表格接口 ——测试可行 升级↑&#xff1a;async await 等接口返回后再开始下一个接口查询 ________________________________________________________…...

为什么要创建 Vue 实例

核心原因:Vue 需要一个「控制中心」来驱动整个应用 你可以把 Vue 实例想象成你应用的**「大脑」或「引擎」。它负责协调模板、数据、逻辑和行为,将它们变成一个活的、可交互的应用**。没有这个实例,你的代码只是一堆静态的 HTML、JavaScript 变量和函数,无法「活」起来。 …...

LCTF液晶可调谐滤波器在多光谱相机捕捉无人机目标检测中的作用

中达瑞和自2005年成立以来&#xff0c;一直在光谱成像领域深度钻研和发展&#xff0c;始终致力于研发高性能、高可靠性的光谱成像相机&#xff0c;为科研院校提供更优的产品和服务。在《低空背景下无人机目标的光谱特征研究及目标检测应用》这篇论文中提到中达瑞和 LCTF 作为多…...

DeepSeek源码深度解析 × 华为仓颉语言编程精粹——从MoE架构到全场景开发生态

前言 在人工智能技术飞速发展的今天&#xff0c;深度学习与大模型技术已成为推动行业变革的核心驱动力&#xff0c;而高效、灵活的开发工具与编程语言则为技术创新提供了重要支撑。本书以两大前沿技术领域为核心&#xff0c;系统性地呈现了两部深度技术著作的精华&#xff1a;…...