热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

IOS笔记汇总

IOS笔记汇总为了方便开发者开发出强大的功能,苹果提供了各种各样的框架IOS属性IOS基础属性导入依赖propertyNSStringNSDictionaryNSAr


IOS笔记汇总

        • 为了方便开发者开发出强大的功能,苹果提供了各种各样的框架
    • IOS 属性
    • IOS 基础属性
        • 导入依赖
        • property
        • NSString
        • NSDictionary
        • NSArray
        • IBAction和IBOutlet
    • IOS 基础方法
        • 创建 .h 文件
        • 创建 .m 文件
    • 常用方法
        • 关闭键盘 resignFirstResponder
        • 强行关闭键盘 endEditing
        • 简易动画大致有2种方式:
        • int转String
        • 方法理论
    • UIView的常见属性
        • transform属性
    • UIView的常见方法
        • 获取手机页面宽度
        • 修改控件的位置和尺寸
        • 通过路径获取数据
        • 序列帧动画
        • 动画效果
    • 图片
        • IOS技能树
        • UI控件


为了方便开发者开发出强大的功能,苹果提供了各种各样的框架

UIKit:创建和管理应用程序的用户界面
UIKit基本使用
QuartzCore:提供动画特效以及通过硬件进行渲染的能力
CoreGraphics:提供2D绘制的基于C的API
CoreLocation:使用GPS和WIFI获取位置信息
MapKit:为应用程序提供内嵌地图的接口
AVFoundation:音频、视频处理


IOS 属性


IOS 基础属性


导入依赖

导入第三方依赖
#import 导入本地依赖/类文件
#import "ViewController.h"

property

// strong:会复制引用,该一个处,被引用出也会改变
@property (nonatomic,strong) NSString *str1;// copy:会开辟一块新的内存区域,而且copy是不可变拷贝
@property (nonatomic,copy) NSString *str2;/**
1.多线程特性:表示属性是否具有多线程特性,它有两个值:nonatomic(默认值)和atomic;
2.读写特性:表示属性是否可读或者可写,它有两个值:readwrite(默认值)和readonly;
(readonly:只会)
3.内存管理特性:用来给ARC做指示,它有四个值:strong(默认值),weak,copy和unsafe_unretained;
*/
@property (nonatomic,readwrite,strong) NSString *name;strong:强引用也就是引用,其存亡直接决定了所指对象的存亡。如果不存在指向一个对象的引用,并且此对象不再显示列表中,则此对象会被从内存中释放。
weak:弱引用除了不决定对象的存亡外,其他与强引用相同。即使一个对象被持有无数个若引用,只要没有强引用指向他,那麽其还是会被清除。1> 控件用weak2> 属性对象用strong3> 非对象类型(int Double Float...)用assign4> 字符串NSString用copy创建对象的2种方式
MyObject * my = [[MyObject alloc] init];MyObject * my = [MyObject new];

NSString

// 创建 NSString 对象
NSString *字符 = @"字符...";
// NSString类型动态插入字符
NSLog(@"str1:%@ str2:%@",str1,str2);

NSDictionary

// 创建 NSDictionary 字典对象
NSDictionary *字典 = @{@"name": @"nameData",@"desc": @"descData", ......};

NSArray

// 创建数组对象
NSArray *数组 =@[*字典1,*字典2,*字典3, ...... ];
// 数组使用
数组[self.index][@"name"];

IBAction和IBOutlet

IBAction
从返回值角度上看,作用相当于void
只有返回值声明为IBAction的方法,才能跟storyboard中的控件进行连线IBOutlet
只有声明为IBOutlet的属性,才能跟storyboard中的控件进行连线

IOS 基础方法

C语言
.h 头文件,用于存放函数声明
.c C语言源文件,用于实现头文件中声明的方法OC语言
.h 头文件,头文件包含类,方法,属性声明
.m/.mm 类的实现文件,参与编译的文件,用来实现类中声明的方法

创建 .h 文件

#import "父类.h"@interface 类名称 : 父类 {int memberVar1; // 实体变量id memberVar2;
}+(返回类型) class_method; // 类方法-(返回类型) instance_method1; // 实例方法
-(返回类型) instance_method2: (int) p1;
-(返回类型) instance_method3: (int) p1 andPar: (int) p2;
@end

创建 .m 文件

TODO// CG_INLINE 空间换时间
CG_INLINE void ReplaceMethod()

常用方法


关闭键盘 resignFirstResponder

当叫出键盘的那个控件(第一响应者)调用这个方法时,就能退出键盘
例子: [self.对象 resignFirstResponder];

强行关闭键盘 endEditing

只要调用这个方法的控件内部存在第一响应者,就能退出键盘
例子:
[self.view endEditing:YES]; // 多线程也强制关闭
[self.view endEditing:NO];

简易动画大致有2种方式:

头尾式

[UIView beginAnimations:nil context:nil];
/** 需要执行动画的代码 **/
[UIView commitAnimations];

Block式

[UIView animateWithDuration:0.5 animations:^{/** 需要执行动画的代码 **/
}];

int转String

[NSString stringWithFormat:@"%d", num1 + num2];

方法理论

在.m中声明的方法是私有方法,外界无法直接访问,保证了封装性

UIView的常见属性

@property(nonatomic,readonly) UIView *superview;
获得自己的父控件对象@property(nonatomic,readonly,copy) NSArray *subviews;
获得自己的所有子控件对象@property(nonatomic) NSInteger tag;
控件的ID(标识),父控件可以通过tag来找到对应的子控件

transform属性

利用transform属性可以修改控件的位移(位置)、缩放、旋转创建一个transform属性
CGAffineTransform CGAffineTransformMakeTranslation(CGFloat tx, CGFloat ty) ;
CGAffineTransform CGAffineTransformMakeScale(CGFloat sx, CGFloat sy);
CGAffineTransform CGAffineTransformMakeRotation(CGFloat angle)
(注意:angle是弧度制,并不是角度制)在某个transform的基础上进行叠加
CGAffineTransform CGAffineTransformTranslate(CGAffineTransform t, CGFloat tx, CGFloat ty);
CGAffineTransform CGAffineTransformScale(CGAffineTransform t, CGFloat sx, CGFloat sy);
CGAffineTransform CGAffineTransformRotate(CGAffineTransform t, CGFloat angle);清空之前设置的transform属性
view.transform = CGAffineTransformIdentity;

UIView的常见方法

- (void)addSubview:(UIView *)view;
添加一个子控件view- (void)removeFromSuperview;
从父控件中移除- (UIView *)viewWithTag:(NSInteger)tag;
根据一个tag标识找出对应的控件(一般都是子控件)

获取手机页面宽度

(self.view.bounds.size.width - totalCol * viewW)

修改控件的位置和尺寸

@property(nonatomic) CGRect frame;
控件所在矩形框在父控件中的位置和尺寸(以父控件的左上角为坐标原点)@property(nonatomic) CGRect bounds;
控件所在矩形框的位置和尺寸(以自己左上角为坐标原点,所以bounds的x、y一般为0)@property(nonatomic) CGPoint center;
控件中点的位置(以父控件的左上角为坐标原点)通过以下属性可以修改控件的位置
frame.origin
center通过以下属性可以修改控件的尺寸
frame.size
bounds.size

通过路径获取数据


// Bundle-包,只读的
NSString *path = [[NSBundle mainBundle] pathForResource:@"ImageData(文件名称)" ofType:@"plist(文件类型)"];
NSLog(@"%@", path);// File表示从文件的完整路径加载文件
_imageList = [NSArray arrayWithContentsOfFile:path];

序列帧动画

// 序列帧动画,所谓序列帧动画,就是让一组图片一张一张的顺序播放
// 1. 图片的数组
NSMutableArray *arrayM = [NSMutableArray array];for (int i = 0; i }
// 设置图片
[self.tom setAnimationImages:arrayM];// 2. 设置动画时长
[self.tom setAnimationDuration:arrayM.count * 0.075];
// 设置播放次数
[self.tom setAnimationRepeatCount:1];// 3. 开始动画
[self.tom startAnimating];// 4. 动画完成之后,再清除动画数组内容
// @selector 的 setAnimationImages: 方法理解为 设置空的图片
[self.tom performSelector:@selector(setAnimationImages:) withObject:nil afterDelay:self.tom.animationDuration];

动画效果

动画效果 完成之后,将Label从视图中删除

// 1. 首尾式动画,只能做动画,要处理完成后的操作不方便[UIView beginAnimations:nil context:nil];[UIView setAnimationDuration:1.0];label.alpha = 1.0;[UIView commitAnimations];// 2. block动画比首尾式动画简单,而且能够控制动画结束后的操作 在iOS中,基本都使用首尾式动画[UIView animateWithDuration:2.0 animations:^{label.alpha = 0.0;} completion:^(BOOL finished) {// 删除label[label removeFromSuperview];}];

图片


IOS技能树

在这里插入图片描述
在这里插入图片描述


UI控件

在这里插入图片描述


推荐阅读
  • 1.如何在运行状态查看源代码?查看函数的源代码,我们通常会使用IDE来完成。比如在PyCharm中,你可以Ctrl+鼠标点击进入函数的源代码。那如果没有IDE呢?当我们想使用一个函 ... [详细]
  • 优化ListView性能
    本文深入探讨了如何通过多种技术手段优化ListView的性能,包括视图复用、ViewHolder模式、分批加载数据、图片优化及内存管理等。这些方法能够显著提升应用的响应速度和用户体验。 ... [详细]
  • PyCharm下载与安装指南
    本文详细介绍如何从官方渠道下载并安装PyCharm集成开发环境(IDE),涵盖Windows、macOS和Linux系统,同时提供详细的安装步骤及配置建议。 ... [详细]
  • 本文详细介绍如何使用Python进行配置文件的读写操作,涵盖常见的配置文件格式(如INI、JSON、TOML和YAML),并提供具体的代码示例。 ... [详细]
  • 深入理解Tornado模板系统
    本文详细介绍了Tornado框架中模板系统的使用方法。Tornado自带的轻量级、高效且灵活的模板语言位于tornado.template模块,支持嵌入Python代码片段,帮助开发者快速构建动态网页。 ... [详细]
  • 本文介绍了Java并发库中的阻塞队列(BlockingQueue)及其典型应用场景。通过具体实例,展示了如何利用LinkedBlockingQueue实现线程间高效、安全的数据传递,并结合线程池和原子类优化性能。 ... [详细]
  • 在当前众多持久层框架中,MyBatis(前身为iBatis)凭借其轻量级、易用性和对SQL的直接支持,成为许多开发者的首选。本文将详细探讨MyBatis的核心概念、设计理念及其优势。 ... [详细]
  • 本文详细介绍了macOS系统的核心组件,包括如何管理其安全特性——系统完整性保护(SIP),并探讨了不同版本的更新亮点。对于使用macOS系统的用户来说,了解这些信息有助于更好地管理和优化系统性能。 ... [详细]
  • 高效解决应用崩溃问题!友盟新版错误分析工具全面升级
    友盟推出的最新版错误分析工具,专为移动开发者设计,提供强大的Crash收集与分析功能。该工具能够实时监控App运行状态,快速发现并修复错误,显著提升应用的稳定性和用户体验。 ... [详细]
  • ASP.NET MVC中Area机制的实现与优化
    本文探讨了在ASP.NET MVC框架中,如何通过Area机制有效地组织和管理大规模应用程序的不同功能模块。通过合理的文件夹结构和命名规则,开发人员可以更高效地管理和扩展项目。 ... [详细]
  • Python 异步编程:ASGI 服务器与框架详解
    自 Python 3.5 引入 async/await 语法以来,异步编程迅速崛起,吸引了大量开发者的关注。本文将深入探讨 ASGI(异步服务器网关接口)及其在现代 Python Web 开发中的应用,介绍主流的 ASGI 服务器和框架。 ... [详细]
  • FinOps 与 Serverless 的结合:破解云成本难题
    本文探讨了如何通过 FinOps 实践优化 Serverless 应用的成本管理,提出了首个 Serverless 函数总成本估计模型,并分享了多种有效的成本优化策略。 ... [详细]
  • 本文介绍如何使用Objective-C结合dispatch库进行并发编程,以提高素数计数任务的效率。通过对比纯C代码与引入并发机制后的代码,展示dispatch库的强大功能。 ... [详细]
  • CentOS7源码编译安装MySQL5.6
    2019独角兽企业重金招聘Python工程师标准一、先在cmake官网下个最新的cmake源码包cmake官网:https:www.cmake.org如此时最新 ... [详细]
  • 数据库内核开发入门 | 搭建研发环境的初步指南
    本课程将带你从零开始,逐步掌握数据库内核开发的基础知识和实践技能,重点介绍如何搭建OceanBase的开发环境。 ... [详细]
author-avatar
点燃半吱煙
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有