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

QtPlaskin实战指南:从HDF5数据解析到等离子体动力学可视化

1. QtPlaskin与等离子体动力学分析入门 第一次接触QtPlaskin时&#xff0c;我被它处理复杂等离子体数据的能力惊艳到了。这个基于Python和Qt开发的图形工具&#xff0c;专门用于解析ZDPlasKin等等离子体动力学程序生成的HDF5格式数据。想象一下&#xff0c;你刚完成了一个长达…...

Label Studio 视频标注实战:解决动态追踪、效率低下的5个进阶策略

Label Studio 视频标注实战&#xff1a;解决动态追踪、效率低下的5个进阶策略 【免费下载链接】label-studio Label Studio is a multi-type data labeling and annotation tool with standardized output format 项目地址: https://gitcode.com/GitHub_Trending/la/label-st…...

FlowState Lab与SpringBoot集成:构建企业级波动分析微服务

FlowState Lab与SpringBoot集成&#xff1a;构建企业级波动分析微服务 1. 引言&#xff1a;当AI预测遇上微服务架构 电商大促期间的服务器负载波动、金融交易中的异常流量监测、物流系统的季节性需求变化...这些业务场景都需要对时序数据进行实时分析和预测。传统单机版的分析…...

GLM-4V-9B GPU高效利用:通过dtype对齐+4-bit量化实现A10G 24GB满载运行

GLM-4V-9B GPU高效利用&#xff1a;通过dtype对齐4-bit量化实现A10G 24GB满载运行 1. 引言 最近在折腾多模态大模型本地部署的朋友&#xff0c;可能都遇到过类似的问题&#xff1a;模型参数动辄几十上百亿&#xff0c;显存要求高得吓人&#xff0c;好不容易找到个能在消费级显…...

别再让UI卡死了!WPF开发中Dispatcher.Invoke和BeginInvoke的保姆级避坑指南

别再让UI卡死了&#xff01;WPF开发中Dispatcher.Invoke和BeginInvoke的保姆级避坑指南 当你在WPF应用中点击一个按钮后界面突然冻结&#xff0c;进度条卡在50%不再前进&#xff0c;鼠标变成旋转的沙漏——这种糟糕的用户体验往往源于错误的线程调度方式。作为C#开发者&#xf…...

从YOLO到DeepLab:盘点CV任务中那些‘神级’特征融合技巧与避坑指南

从YOLO到DeepLab&#xff1a;盘点CV任务中那些‘神级’特征融合技巧与避坑指南 在计算机视觉领域&#xff0c;特征融合技术就像一位隐形的调音师&#xff0c;默默协调着神经网络中不同层次、不同来源的信息流。当你在目标检测任务中遇到小目标识别率低的问题&#xff0c;或在图…...

NVIDIA vGPU许可服务器HA配置避坑指南:从环境准备到故障切换测试

NVIDIA vGPU许可服务器高可用配置实战&#xff1a;从零搭建到容灾验证 在虚拟化与AI计算融合的今天&#xff0c;NVIDIA vGPU技术已成为图形工作站、云游戏和机器学习平台的核心支撑。但许多团队在享受显卡虚拟化红利时&#xff0c;往往忽略了许可服务的高可用保障——当单点故障…...

Gauge常见问题解决:10个典型错误及修复方法

Gauge常见问题解决&#xff1a;10个典型错误及修复方法 【免费下载链接】gauge Light weight cross-platform test automation 项目地址: https://gitcode.com/gh_mirrors/ga/gauge Gauge作为一款轻量级跨平台测试自动化工具&#xff0c;在使用过程中可能会遇到各种错误…...

OpenHarmony 5.0.2 音频驱动适配实战:从ADM配置到耳机/扬声器切换

1. OpenHarmony音频驱动适配背景与问题定位 最近在RK3568平台上适配OpenHarmony 5.0.2的音频功能时&#xff0c;遇到了一个典型问题&#xff1a;使用RK809音频芯片时&#xff0c;耳机可以正常发声&#xff0c;但内置扬声器完全没声音&#xff0c;而且插入耳机后扬声器也不会自动…...

Mac新手必看:保姆级教程教你用阿里源加速Homebrew安装(附一键脚本)

Mac新手必备&#xff1a;用阿里云镜像极速部署Homebrew全攻略 刚入手MacBook的你&#xff0c;可能正摩拳擦掌准备搭建开发环境。但当你在终端输入brew install python后&#xff0c;进度条却像蜗牛爬行——这不是你的网络问题&#xff0c;而是Homebrew默认从GitHub拉取资源时&a…...