自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(85)
  • 收藏
  • 关注

原创 iOS 人脸识别

本文主要介绍iOS使用百度AI人脸检测实现简单的人脸年龄和性别检测。文章目录首先在平台里注册账号获取Access Token申请到Access Token后才可以进行人脸数据请求GitHub地址首先在平台里注册账号注册app后拥有API Key和Secret Key获取Access Token请求URL数据格式向授权服务地址https://aip.baidubce.com/oauth...

2020-02-03 18:31:55 703

原创 UIImagePickerController(图像选取器)使用方法

文章目录遵守协议在使用前应判断是否可用照片采集采集之后参考博客遵守协议@interface ViewController : UIViewController<UIImagePickerControllerDelegate,UINavigationControllerDelegate> @property (strong,nonatomic) UIImagePicker...

2020-02-01 20:56:27 5108

原创 iOS 属性

文章目录属性概念属性特质原子性读/写权限内存管理语义方法名属性概念“属性”是OC的一项特性,用于封装对象中的数据。OC对象通常会把其所需要的数据保存为各种实例变量。实例变量一般通过“存取方法”来访问。其中,“获取方法”(getter)用于读取变量值,而“设置方法”(setter)用于写入变量值。这个概念已经定型,并且经由“属性”这一特性而成为 OC 2.0 的一部分,开发者可以令编译器自动编写...

2020-02-01 20:27:56 224

原创 Block

文章目录Block 简介Block结构__block说明符block捕获变量auto:自动static:静态Block 简介将函数及其执行上下文封装起来的对象block的调用实际就是函数的调用Block结构(通过clang编译器,我们可以获得在编译过程中生产的中间代码,看block时如何实现的)在当前目录下找到main.cpp文件,打开后能看到block生成了很多结构体如下:(简化...

2019-12-14 23:13:45 121

原创 iOS Category的使用

Category概念官方文档解释:您可以使用类别来定义现有类的其他方法(甚至是您的源代码不可用的类),而无需子类化。通常,您可以使用类别将方法添加到现有类中,例如Cocoa框架中定义的方法。所添加的方法由子类继承,并且在运行时与类的原始方法没有区别。您还可以使用自己的类的类别来:将自己的类的实现分发到单独的源文件中-例如,您可以将一个大类的方法分为几个类别,然后将每个类别放入一个不同的文件...

2019-12-08 01:46:49 1172 1

原创 有向图的创建及深搜广搜

文章目录输入输出有向图的创建深搜深搜的定义代码实现广搜广搜的定义广搜的原理代码实现输入第一行输入两个整数,以空格隔开,分别代表图的顶点数n和弧数e。(顶点个数<=20)第二行依次输入顶点值,类型为字符,中间不用间隔符。接下去有e行,每行为两个字符 uv(中间没有间隔符),表示一条弧<u,v>。5 7ABCDEABAEBCCDDADBEC输出第一行,输...

2019-12-05 22:25:18 672

原创 iOS 数据归档解档

文章目录简介普通数组的归档解档归档解档多个普通对象同时归档解档归档解档自定义对象的归档解档Student.hStudent.m归档解档简介本篇文章使用NSKeyedArchiver和NSKeyedUnarchiver进行iOS的归档解档归档:即将数据写入文件里。一般我们app的数据都是在内存里,只要app关闭,数据就会丢失。但是将数据保存在文件里,就能将数据保存至本地,不管app关闭还是重...

2019-12-01 01:35:36 1682

原创 LeetCode 24.两两交换链表中的节点 C语言

题目24.两两交换链表中的节点给定一个链表,两两交换其中相邻的节点,并返回交换后的链表。你不能只是单纯的改变节点内部的值,而是需要实际的进行节点交换。示例:给定 1->2->3->4, 你应该返回 2->1->4->3.思路此处以四个节点为例首先更换前两个节点,将第一个节点指向第三个节点,第二个节点指向第一个节点,如图但是到第二个两两交换就...

2019-11-30 00:37:06 493

原创 iOS WKWebView简单使用

文章目录WKWebView简单介绍使用方法准备加载网页加载文件界面返回到app代理协议WKWebView简单介绍自iOS8开始,苹果推出了新框架WebKit,提供了替换UIWebView的组件WKWebView,一个用来展示网页的组件。WKWebView解决了UIWebView加载速度慢,占用内存多,优化困难等问题,可以说,WKWebView是目前App内部加载网页的最佳选择。WKWeb...

2019-11-24 01:03:39 1222

原创 iOS 完全深复制

文章目录复制简介深复制完全深复制协议方法:使用 initWith***: copyItems:YES 方法归档解档复制简介关于深复制与浅复制的简介:iOS 深复制与浅复制实现完全深复制的方法有两种:协议方法和归档解档归档和解档的概念补充:有时存在这样的需求,即将程序中使用的多个对象及其属性值,以及它们的相互关系保存到文件中,或者发送给另外的进程。为了实现此功能,foundation框架...

2019-11-20 20:55:19 668

原创 二叉树的三种遍历及求高度和非叶子节点(递归实现)

文章目录二叉树的三种遍历简介例如代码实现二叉树求高度思想代码实现二叉树求其非叶子节点思想代码实现二叉树的三种遍历简介先序遍历:先访问根节点——左子树——右子树中序遍历:先访问左子树——根节点——右子树后序遍历:先访问左子树——右子树——根节点例如先序遍历结果:ABDECF中序遍历结果:DBEAFC后序遍历结果:DEBFCA代码实现先序遍历:void preOr...

2019-11-12 17:51:54 633

原创 iOS 使用第三方库提取图片主色值

描述在写项目时我们有时会需要根据点击图片的颜色来改变主题颜色,就需要获取照片主色值,在这里我应用第三方库 SOZOChromoplast 来实现使用步骤首先通过Cocoapods安装在终端处将 pod ‘SOZOChromoplast’ 添加到Podfile中并运行 pod install在使用处写头文件#import <SOZOChromoplast.h>调用的...

2019-11-10 01:40:42 901

原创 LeetCode 155 最小栈 C语言

题目设计一个支持 push,pop,top 操作,并能在常数时间内检索到最小元素的栈。push(x) – 将元素 x 推入栈中。pop() – 删除栈顶的元素。top() – 获取栈顶元素。getMin() – 检索栈中的最小元素。示例:MinStack minStack = new MinStack();minStack.push(-2);minStack.push(0);m...

2019-11-03 02:19:00 149

原创 iOS 深复制与浅复制

文章目录简介代码探索非集合类对象集合类对象单层深复制完全深复制简介浅复制:只改变新对象的指针指向,并未生成新的内存地址,只是将新对象的指针指向要复制对象的内存地址深复制:改变新对象指针指向,还为对象生成新的内存地址。 深复制又分为单层深复制与完全深复制1.单层深复制虽然生成了新的内存地址,但是新的对象中的元素地址还是旧对象元素的地址2.完全深复制不仅内存地址是新的,对象里面的元素地址也...

2019-10-27 01:16:18 275

原创 iOS 使用Manager 进行JSON解析数据及model处理

文章目录简介代码及解析Manager的创建数据请求函数使用和Model的配合简介Manager的使用相当于单例,即将需要用到的全局变量和解析数据的方法存入一个类中单例在整个生命周期中只需要创建一次,Manager同理,再考虑到唯一性及线程安全,在这里我们给Manager的创建加锁,若已经存在Manager便不再申请代码及解析Manager的创建dispatch _once可以保证线...

2019-10-27 00:16:10 353

原创 LeetCode 121 买卖股票的最佳时机 和 LeetCode 122 买卖股票的最佳时机2 C语言

文章目录121 买卖股票的最佳时机题目解析代码121 买卖股票的最佳时机题目给定一个数组,它的第 i 个元素是一支给定股票第 i 天的价格。如果你最多只允许完成一笔交易(即买入和卖出一支股票),设计一个算法来计算你所能获取的最大利润。注意你不能在买入股票前卖出股票。示例 1:输入: [7,1,5,3,6,4]输出: 5解释: 在第 2 天(股票价格 = 1)的时候买入,在第 5 ...

2019-10-21 19:40:03 201

原创 iOS 自定义button

自定义button的作用有时候写项目会需要有label和imageView等等很多控件加在一起使用,我之前用很多个UI控件拼接使用,但是总感觉有点low,不够专业,就开始学习自定义button再啰嗦一句:UIButton默认的布局是左侧image,右侧title,如果想要改变image与title的frame,直接设置是不会有效果的。可以通过titleEdgeInsets、imageEdgeI...

2019-10-20 00:30:44 311

原创 iOS 中的懒加载

文章目录懒加载简介self.showImageView和_showImageView的区别viewDidLoad正常加载代码懒加载代码懒加载简介懒加载,顾名思义,就是不用它的时候不加载,换句话说,就是只有使用它的时候它才加载,故在某些情况下可以节省空间所谓懒加载,就是推迟它的getter方法的执行。self.showImageView和_showImageView的区别self.sho...

2019-10-19 22:46:27 157

原创 分栏控制器中字体颜色,大小,位置的设置

注意:该文章使用UINavigationController来进行操作如果我们不使用这些美化操作,建立出的分栏控制器是这样的:我们修改一下title内容,加个图片,改个颜色位置建立出的分栏控制器是这样的:设置字体大小://设置title字体大小 [nav1.tabBarItem setTitleTextAttributes:[NSDictionary dictionaryWi...

2019-10-12 22:47:50 261

原创 仿iPhone计算器总结(masonry布局, MVC,没有中缀转后缀)

布局方面学习masonry以来还是第一次使用masonry布局,加上有一阵子没有认真敲代码了,布局也算是我的第一个坎具体讲解在这篇文章button点击事件之前一直都是一个一个的给button加点击事件,但计算器按钮很多,一个一个添加会使代码有很多废话,从学长的代码里学会使用循环加事件for (DeepButton *button in _myView.buttonArr) { ...

2019-10-07 05:56:45 302

原创 masonry布局(类似计算器按钮的布局)

文章目录效果图代码函数解析效果图这篇博客要讲的就是这个简易计算器的按钮布局代码[self.buttonArr1 mas_distributeViewsAlongAxis:MASAxisTypeHorizontal withFixedSpacing:10 leadSpacing:10 tailSpacing:10]; [self.buttonArr1 mas_makeConstra...

2019-10-07 04:55:35 322

原创 C语言--简易表达式求值(栈的初步应用)

文章目录前言思路核心代码前言表达式求值是栈应用的一个典型的应用实例。在计算机中,任何一个表达式都是由运算符和操作数构成的。今天我讨论的是运算符仅含有 + - * / ()的情况。思路我们首先建立两个栈,一个用于存放运算符,一个用于存放操作数然后获取一个表达式,对表达式从左向右扫描,因为要符合算术运算先乘除后加减的运算规则,故并不是遇见一个运算符就可以进行运算,要与上一次遇见的运算符进...

2019-10-01 01:38:00 6150 4

原创 剪不断,理还乱的UIColor,CGColor,CIColor

UIColor 继承自 NSObject,是UIKit中存储颜色信息的一个重要的类,一个UIColor对象包含了颜色和透明度的值,使用UIColor对象的最常见方法是将其提供给UIKit中的其他对象。例如,UIView该类(及其子类)包括背景和淡色,以影响它们在屏幕上的绘制方式。例如设置背景颜色:self.view.backgroundColor = [UIColor blueColor];...

2019-09-30 23:34:35 127

原创 iOS present 和 push

文章目录简介使用方法A视图 present 到 B视图再push到 C视图C视图使用dismiss返回C视图使用pop返回简介共同点– present和push方法都可用于推出新的界面。 present和dismiss对应使用,push和pop对应使用。不同点– present弹出的视图是模态视图(我对模态视图的理解大概就是一个临时视图);push由视图栈控制,每一个视图都入栈,...

2019-09-30 22:30:51 1150

原创 layoutSubview调用问题 含证明及特殊情况

文章目录调用场景代码显示及证明特殊情况调用场景addSubview时会触发view的frame值发生改变会触发滚动scrollView会触发旋转屏幕会触发父view上的layoutSubview改变UIView大小也会触发父View上的layoutSubview代码显示及证明为了显示清楚,我在自定义的scrollView和view里的layoutSubview函数加入打印- ...

2019-09-28 18:15:26 278

原创 ViewController生命周期(含viewDidLoad和loadView的特殊情况)

前言这里我用视图的显示顺序以及打印情况来表示函数调用顺序,即ViewController的生命周期函数介绍viewDidLoad:在视图加载后被调用,如果是在代码中创建的视图加载器,他将会在loadView方法后被调用,如果是从nib视图页面输出,他将会在视图设置好后后被调用。只会被调用一次,之后进入这个ViewController不调用此函数viewLoad:每次访问controlle...

2019-09-26 19:31:27 2442 2

原创 LeetCode 1186 删除一次得到子数组最大和

删除一次得到子数组最大和题目给你一个整数数组,返回它的某个 非空 子数组(连续元素)在执行一次可选的删除操作后,所能得到的最大元素总和。换句话说,你可以从原数组中选出一个子数组,并可以决定要不要从中删除一个元素(只能删一次哦),(删除后)子数组中至少应当有一个元素,然后该子数组(剩下)的元素总和是所有子数组之中最大的。注意,删除一个元素后,子数组 不能为空。示例 1:输入:arr = ...

2019-09-21 23:44:05 178

原创 LeetCode 876 链表的中间节点

链表的中间节点题目给定一个带有头结点 head 的非空单链表,返回链表的中间结点。如果有两个中间结点,则返回第二个中间结点。示例 1:输入:[1,2,3,4,5]输出:此列表中的结点 3 (序列化形式:[3,4,5])返回的结点值为 3 。 (测评系统对该结点序列化表述是 [3,4,5])。注意,我们返回了一个 ListNode 类型的对象 ans,这样:ans.val = 3,...

2019-09-21 21:47:30 156

原创 LeetCode 19 删除链表的倒数第N个节点

删除链表的倒数第N个节点题目给定一个链表,删除链表的倒数第 n 个节点,并且返回链表的头结点。示例:给定一个链表: 1->2->3->4->5, 和 n = 2.当删除了倒数第二个节点后,链表变为 1->2->3->5.说明:给定的 n 保证是有效的。思路定义两个快慢指针,一个标记指针,需要删除倒数第N个节点,就让快指针先跑N个节点,然后...

2019-09-21 21:40:34 82

原创 LeetCode 21 合并两个有序链表

合并两个有序链表题目将两个有序链表合并为一个新的有序链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。示例:输入:1->2->4, 1->3->4输出:1->1->2->3->4->4思路因为两个链表是有序的,创建两个标记指针,一个指向l1链表,一个指向l2链表,比较两个的值,若l1指向的值小,p3就等于p1,指针后移,...

2019-09-21 21:01:14 67

原创 LeetCode 141 环形链表

环形链表题目给定一个链表,判断链表中是否有环。为了表示给定链表中的环,我们使用整数 pos 来表示链表尾连接到链表中的位置(索引从 0 开始)。 如果 pos 是 -1,则在该链表中没有环。示例 1:输入:head = [3,2,0,-4], pos = 1输出:true解释:链表中有一个环,其尾部连接到第二个节点。示例 2:输入:head = [1,2], pos = 0输...

2019-09-21 20:10:00 205

原创 LeetCode206 反转链表

反转链表反转一个单链表。示例:输入: 1->2->3->4->5->NULL输出: 5->4->3->2->1->NULL思路:使用三个指针,分别标记上一次反转后的表头,这一次需要反转的节点和下一次需要反转的节点过程中相当于将一个链表拆成了两个以示例来说就是第一次反转后成为 1 和 2345第二次反转后成为 21 和 ...

2019-09-20 20:53:08 96

原创 iOS KVO用法(附修改账号密码demo)

KVO简介KVO全称KeyValue Observing,是苹果提供的一套事件通知机制。作用:允许对象监听另一个对象特定属性的改变,并在改变时接收到事件。注意:KVO只对属性发生作用,一般继承自NSObject的对象都默认支持KVO。使用步骤注册观察者使用方法:addObserver:forKeyPath:options:context:参数含义:1.observer:观察者,...

2019-09-20 19:21:08 217

原创 iOS实例浅谈MVC (附登陆注册demo)

MVC简介MVC全名是Model View Controller,是模型(model)-视图(view)-控制器(controller)的缩写。MVC开始是存在于桌面程序中的,M是指业务模型,V是指用户界面,C则是控制器,使用MVC的目的是将M和V的实现代码分离,从而使同一个程序可以使用不同的表现形式。比如一批统计数据可以分别用柱状图、饼图来表示。C存在的目的则是确保M和V的同步,一旦M改变,...

2019-09-19 00:15:33 836

原创 Masonry的使用

Masonry简介Masonry是一个iOS开发布局框架,相比原生的NSLayoutConstraint,提高了使用容易度和代码的可阅读程度。Masonry使用了链式语法,例如:make.left.equalTo(view.mas_bottom).offset(0);不管是使用还是阅读,都是非常易懂的。安装基于CocoaPods安装CocoaPods可参考iOS安装CocoaPods详细过...

2019-09-15 00:33:34 937

原创 iOS 联网的天气预报总结

前言作为留校的最后一个任务,天气预报与之前写的demo挺不一样的,对我来说还是挺有挑战性的,网络请求总是对不上,数组和字典看着看着就乱了,开始着手写的前一天半几乎没有进度,一点思路都没有,有一天下午改了一下午的error,一下午都不知道跑出来是什么样子,各种报错,慢慢才开始找到感觉走回正轨。天气预报需要使用到传值及网络请求,可以参考传值和网络请求github:天气预报思路这是我自己写的顺...

2019-08-16 19:49:38 1092 2

原创 iOS 简单的网络请求及数据解析(协议方法)

前言这周写天气预报时需要网络请求才开始正式接触,理解的可能不够全面,有什么不对的地方,敬请斧正这篇以搜索城市时的联想为例,即思路第一步当然是初始化UITextField和UITableView,联想词在UITableView里显示然后创建URL及协议方法因为输入一个字符联想词也需要同时改变,故我在UITextField的协议方法 - (BOOL)textField:(U...

2019-08-15 10:38:13 1618

原创 iOS 简单的学生管理系统(增删改查)

思路这个简单的学生管理系统学生信息只有姓名,班级,年龄我在app执行时加了个开始界面,在AppDelegate.m 中将根视图设为需要显示的开机界面即可首先写登陆注册界面,注册需要查重,并转到登陆界面时要传值,传值可看我的这篇博客进入app后显示学生信息及要进行的操作,跳转界面即可难点因为学生信息是统一的,执行过程中涉及到很多传值问题,正传反传一定要清楚查找时可以按姓名查找,按...

2019-08-09 20:18:23 900 1

原创 iOS聊天室 简单的对话聊天界面(cell自适应高度)

难点因为聊天长度不一样,需要设置自适应高度发送信息后,需要使tableView添加一条cell,并更新cell的所有子视图需要清除,否则会有bug(在最后会附上不清除子视图的效果)键盘弹出界面上移,点击空白处键盘回收,界面下移思路聊天界面的对话其实就是一个tableView,创建一个可变数组记录每句话的高度,根据话语的高度设置单元格高度按发送键时插入一条新cell在最底端,获取...

2019-08-09 11:12:36 3894 2

原创 iOS跨界面传值

第一种:正传,即将第一个界面上的值传递给第二个界面思路:第二个界面的ViewController里定义一个属性NSString *str在第一个界面跳转第二个界面的button点击事件中将第二个界面实例化,并将要传递的信息赋值给str第二个界面中接收str赋值给需要的对象代码:ViewController.m 里:- (void)viewDidLoad { [super ...

2019-08-08 08:59:54 612

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除