自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

浅浅的博客

温故而知新

  • 博客(91)
  • 资源 (8)
  • 问答 (2)
  • 收藏
  • 关注

原创 iOS 中block的循环引用问题

开发中经常使用weakSelf和strongSelf来解决block的循环引用问题,但是是不是所有的block都会导致循环引用呢?显然不是的,那么怎么判断调用一个带有block方法时是否会造成循环引用呢,我们来分析一下。首先我们来写一个含有block的类,并调用自己,然后在外部实现这个block,来测试什么情况会出现循环引用。@interface ALDTestBlockModel ()@...

2018-12-20 15:30:26 847 2

原创 Mac下使用webstorm和Charles搭建本地服务器使手机可访问本地html网页

写了一段时间的h5,页面主要是在手机App中使用,直接用谷歌的模拟器调试是比较方便,但有时候在谷歌浏览器中生效的在手机上不生效,这就比较烦,要想看手机上的效果就得发布到服务器上,还有问题又得重新改,然后重新发布再测试,很麻烦。之前一直想用XAMPP搭建一个本地服务器,然后让手机访问,找了一堆教程,经过一系列繁杂的配置,也终于成功了,但因为电脑连的WiFi,第二天打开电脑,发现ip变了,果断的访问...

2018-12-14 10:39:33 2942

原创 iOS中FMDB的使用

在iOS开发中,如果本地需要做大量的缓存,FMDB用的是比较多的,怎么集成到项目中我这里就不说了,主要说一下FMDB使用的一个思路和自己遇到的坑。在我自己开发聊天系统的时候,我一般是用FMDB用来缓存最近联系人列表和用户的聊天消息列表。因为聊天系统,涉及到的读和写比较频繁,所以我会封装一个单例类用来处理每个部分的数据存储和读写。下面是用来管理最近联系人缓存的功能实现,其余的模块也可以按照这样的...

2018-11-11 19:52:50 2851 2

原创 GCD常用方法及应用场景

开发过程中,出现耗时操作造成界面卡顿是常见的问题之一,问题原因就是因为耗时操作阻塞了主线程,所以要解决这类问题最简单的就是引进子线程,将耗时操作移出主线程,耗时操作完成后回到主线程中更新UI。 之前在做一个通讯录的时候,由于需要自己进行排序,所以第一次时需要将几千条的数据都拉下来然后处理,这是非常耗时的,直接放在主线程中网络请求然后各种处理数据会让界面卡死3到5秒。后来使用GCD的并发队列异步处...

2018-08-30 15:44:42 1989

原创 iOS中主队列的同/异步执行

主队列是主线中的一个串行队列,通常我们刷新UI都会回到主队列。下面我们来看一下主队列同步执行和异步执行会产生什么样的效果。主队列,异步执行//主队列+异步执行//不会开启新的线程,任务顺序执行-(void)test5{ NSLog(@"主队列+异步执行"); //global_queue 主队列 dispatch_queue_t queue = dispat...

2018-08-30 13:26:58 2891 2

原创 多线程中队列和同/异步执行问题

队列分为并行队列和串行队列,执行方式分为同步执行和异步执行,那么组合一下就有四种方式,下面我会用GCD来验证和总结一下各个组合的特性。并发队列,同步执行//并发队列+同步执行//不会开启新线程,任务顺序执行-(void)test1{ NSLog(@"并发队列+同步执行"); //DISPATCH_QUEUE_CONCURRENT 并发队列 dispatch...

2018-08-30 11:47:28 1799

原创 iOS UI入门——Objective-C和Swift下UITabBarController的使用

很多App启动页过后展示的就是选项卡也就是UITabBarController,这里讲的是最简单的选项卡的实现,直接继承自UITabBarController。Objective-C代码:#import "MainTabBarViewController.h"#import "HomeViewController.h"#import "UserCenterViewControlle...

2018-07-19 11:07:09 854

原创 iOS UI入门——Objective-C和Swift下UIPageControl的使用

UIPageControl就是我们常说的小白点,常用于轮播图,与UIScrollView一起使用。效果如图: Objective-C代码:#import "ViewController.h"@interface ViewController ()<UIScrollViewDelegate>@property(nonatomic,strong) UIScrollVi...

2018-07-12 10:56:43 1301

原创 iOS使用UIScrollView实现图片循环滑动的思路解析

一组图片循环滑动在开发中经常用到,App的欢迎页、广告banner等等都会用到。成熟的第三方也比较多,个人用的比较多的是JCTopic,这个很轻量级,代码也不多,用起来也是比较方便。 看过源码之后整理了一下实现的思路和原理,我们先来分析一下我们要实现的这个功能——图片循环轮播,看到这个需求我们想到的就是一组图片能够左右滑动,并且无限循环。 要实现这个功能,我们肯定需要一个可滑动的view,那么...

2018-07-11 16:46:00 3469

原创 iOS常用方法——一个好用的获取导航栏高度和Tabbar高度的分类

开发中经常需要知道导航栏(系统)的高度和Tabbar的高度,一般是用来计算在ViewController中的位置和高度,我们可以写一个UIVIewController的分类,这样在调用的时候就很方便。代码如下:#import "UIViewController+MYViewControllerBar.h"@implementation UIViewController (MYViewC...

2018-07-10 10:06:11 16604

原创 Swift Mark的使用

在用Objective-C开发iOS的时候,常常用到#pragma mark -,使用Mark可以让代码看上去整洁,提高了代码的可读性。 最近开始写Swift,发现不能再这样写了,这样写直接报错。Swift下的Mark://MARK:-阅读代码时,我习惯先看每个类中的方法,只要方法名不是乱起,一般看完方法名基本知道这个类主要是干什么以及它的实现逻辑,所以加了Mark能让代码更清晰,这...

2018-07-09 16:14:59 3480

原创 iOS UI入门——Swift下WKWebView的使用

之前有写过Objective-C语法下WKWebView的使用,基本包含了界面和与h5的交互,这里主要写Swift语法下WKWebView的使用。直接上代码吧,说明基本都在注释里。import UIKitimport WebKitclass ViewController: UIViewController,WKUIDelegate,WKNavigationDelegate,WKScr...

2018-07-09 15:08:55 8990

原创 iOS UI入门——使用Objective-C和Swift实现警告视图和操作列表(UIAlertView,UIActionSheet,UIAlertController)

警告弹框和操作列表在开发中常用到,iOS9之后,UIAlertView和UIActionSheet都会报黄色的警告,但是还是依然可以使用的。在这里主要介绍一在这三个控件在Objective-C和Swift下的使用代码。Objective-C代码:#import "ViewController.h"@interface ViewController ()<UIAlertView...

2018-07-09 14:53:33 486

原创 iOS常用方法——UIWebView全屏显示的实现

项目中加载webView,导航栏由web端做的话,客户端就需要隐藏掉导航栏。这个时候显示出来的页面,在顶部会出现状态栏为空白的问题。底部也会多出空白,即:- (void)viewDidLoad { [super viewDidLoad]; // Do any additional setup after loading the view, typically from a ...

2018-07-05 17:49:43 6795

原创 Mac下使用终端查看某个端口号对应的进程和杀死进程

查看端口号对应的进程打开终端,输入lsof -i tcp:port,port即为端口号,如5037 如果端口号未被占用,回车之后结果如图: 如果端口号被占用,则会出现占用该端口号的进程和进程的id,举个例子: 这样我们就可以根据进程id来杀死进程了。杀死端口号对应的进程如果某个端口号正在被使用,使用上面的命令就可以查看到具体的进程,想要杀死这个端口号对应的进程,就需要用到...

2018-07-05 15:47:47 31475 2

原创 【Android学习笔记】Android Studio打包生成apk

使用Android Studio生成安卓手机的安装包,步骤如下:使用Android Studio打开项目,选择Build—>Generate Signed APK 点击后弹出如下的图,选择Module,然后点击next: 重点来了,如果首次进行打包,那么看到的弹框将会是如下图: 首次打包,我们需要生成一个key,点击Create new…弹出一个新界面: 点击Key s...

2018-07-04 16:42:16 11769

原创 iOS开发iPhone竖屏icon尺寸与启动页尺寸汇总

我比较喜欢在TARGETS的General中设置icon和启动页,也就是如下图的地方: 可能很多人喜欢用LaunchScreen.xib来设置启动页,但是只设置一个的话,可能图片的大小很难适配所有的尺寸。我比较喜欢用Assets来设置,每个系统给对应的尺寸。 下面是我汇总的尺寸,按照所给的尺寸来切图,icon和启动页可以正常显示。icon尺寸: 40x40 60x60 58x5...

2018-07-03 17:03:57 1842

原创 iOS常用方法——WKWebView与h5交互的实现

随着前端开发的强大,原生与h5的交互用的也越来越多。 为什么选用WKWebView,我们可以做一个对比,同一个web页面,用UIWebView加载和用WKWebView来加载,内存占用情况很容易看出来,回到原生页面之后,UIWebView对应的内存也不会降下来。从性能而言,个人觉得能用WKWebView就不要用UIWebView。 UIWebView与h5的交互方式和WKWebView与h5的...

2018-07-03 15:44:57 5155

原创 iOS常用方法——WKWebView缓存清理的实现

WKWebView是iOS8之后出现的,相较于UIWebView,WKWebView占用的内存更小,还有一些其他的优化。但是如果我们不去主动清理webView产生的缓存,两者都会存在缓存这个问题。比如说一个网页改了一些内容,如果不清理缓存,可能很长一段时间我们都没办法看到新的内容,唯一的办法是卸载重装。 为了能让用户第一时间能看到内容的更新,我们在开发的时候,每次打开网页的时候应该先清理一下缓存...

2018-07-03 14:09:41 10113

原创 iOS UI入门——使用Objective-C和Swift实现自定义的UITableViewCell

接着上篇的UITableViewCell的基类,这里自定义的UITableViewCell都继承上篇的BaseTableViewCell。Objective-C代码:自定义cell:#import "CustomTableViewCell.h"@interface CustomTableViewCell ()@property(nonatomic,strong) UIIma...

2018-07-02 13:30:11 996

原创 iOS UI入门——使用Objective-C和Swift含tableViewCell的UITableViewCell基类的实现

继承是面向对象语言的一种特性,在开发中经常用到。基类的存在也大大的方便了开发,能减少很多重复的代码。Objective-C代码:#import "BaseTableViewCell.h"@implementation BaseTableViewCell-(instancetype)initWithStyle:(UITableViewCellStyle)style reuseId...

2018-07-02 09:41:10 1049

原创 iOS UI入门——使用Objective-C和Swift简单实现UITableView

Objective-C代码:#import "ViewController.h"@interface ViewController ()<UITableViewDelegate,UITableViewDataSource>@property(nonatomic,strong) UITableView * tableView;@property(nonatomic,s...

2018-06-29 14:27:31 1043

原创 iOS UI入门——使用Objective-C和Swift简单实现UIScrollView

Objective-C代码:@interface ViewController ()<UIScrollViewDelegate>@end@implementation ViewController- (void)viewDidLoad { [super viewDidLoad]; // Do any additional setup after lo...

2018-06-28 14:46:02 373

原创 iOS UI入门——使用Objective-C和Swift简单实现UITextField

Objective-C代码:设置代理:@interface ViewController ()<UITextFieldDelegate>UITextField相关设置:-(void)setupTextField{ //初始化 UITextField * testTextField = [[UITextField alloc] initWith...

2018-06-27 14:55:32 395

原创 iOS UI入门——使用Objective-C和Swift实现UIButton的显示和点击事件

Objective-C实现UIButton的显示和点击事件-(void)setupButton{ //初始化button UIButton * testButton = [UIButton buttonWithType:UIButtonTypeCustom]; //设置位置和大小 testButton.frame = CGRectMake(20, 300...

2018-06-26 15:36:00 1975

原创 iOS UI入门——使用Objective-C和Swift实现UIImageView显示图片

1.单张图片的显示Objective-C代码:-(void)setupImageView{ //初始化一个imageView UIImageView * testImageView = [[UIImageView alloc] initWithFrame:self.view.frame]; //设置imageView的图片 testImageView...

2018-06-26 14:43:50 2866

原创 iOS UI入门——使用Objective-C和Swift实现UILabel显示文本

UILabel是很常见的UI控件,用到的地方很多。 Objective-C实现UILabel显示静态文本:-(void)setupLabel{ //初始化一个UILabel并确定它的坐标 UILabel * testLabel = [[UILabel alloc] initWithFrame:CGRectMake(50, 130, 120, 40)]; //设置背...

2018-06-26 11:29:55 883

原创 iOS UI入门——使用Objective-C和Swift简单实现UIView的显示

刚开始写Swift,还是有很多不习惯,客户端毕竟是显示为主,所以UI部分很是重要,网上讲Swift语法的有很多,但是系统的讲UI的不是很多(也可能是我自己没找到)。所以我就自己写一个iOS的UI系列,对比着Objective-C写Swift,希望对像我一样刚入门Swift的小伙伴有所帮助~ Objective-C代码实现UIView:-(void)setupView{ //初始化一个...

2018-06-26 10:59:12 2342

原创 iOS常用方法——获取沙盒中的几个目录路径

开发中常遇到需要缓存的需求,缓存的时候我们就需要有一个路径,下面的代码是获取沙盒中的路径的方法: //获取沙盒主目录路径 NSString * homeDirectory = NSHomeDirectory(); NSLog(@"home === %@",homeDirectory); //获取Documents目录路径 NSArray * docum...

2018-06-25 14:40:27 3279

原创 iOS常用方法——动画点击事件的实现

动画的实现我们一般都用UIImageView,比如之前博客中的直线等动画,现在想要给在动的的图片添加一个点击事件。 当时做这个功能的时候试过很多方法,但是有些确实不行,有些时候我不知道别人在写博客的时候是怎么想的,或者真的没有亲自试过,或者是代码太老了无效?有些文章中给出的代码确实跟文章介绍的功能不一致,我觉得最好是自己试过,保证能实现自己所说的功能,这是最基本的。毕竟别人找资料要一个一个试,分...

2018-06-25 14:15:00 2050

原创 iOS常用方法——基于AFNetworking的post、get方法的封装及获取当前网络状态的实现

AFNetworking是一个常用的网络请求库,每个项目的网络请求和返回格式不同,AFNetworking返回的通用型的,我们可以封装一层,让其更适合我们自己的项目。 实现代码:#import <Foundation/Foundation.h>typedef void (^RequestCompleteBlock)(id response);typedef void (^...

2018-06-22 05:38:52 1056

原创 iOS常用方法——一个好用的获取View的位置和大小的类

在写代码的时候我们如果用frame进行布局的话,经常会用到像self.view.frame.size.width这样的语句来获取我们想要的位置或者大小的值,这个语句调用的时候很繁杂,下面是我封装的一个类,很简洁的代码就可拿到自己想要的值。 给UIVIew添加一个分类,因为UI基本都继承自UIView,写在UIVIew的分类中UI类都可调用。#import <UIKit/UIKit.h&...

2018-06-21 17:20:56 5384

原创 iOS常用方法——十六进制颜色值转换为UIColor

字符串十六进制颜色值转换为UIColor:/** 16进制颜色转换为UIColor @param hexColor 16进制字符串(可以以0x开头,可以以#开头,也可以就是6位的16进制) @param opacity 透明度 @return 16进制字符串对应的颜色 */+(UIColor *)colorWithHexString:(NSString *)hexColo...

2018-06-21 17:07:59 6033

原创 iOS常用方法——字符串中含某个子字符串高亮效果的实现

我们在使用Google进行搜索时会看到搜索的关键字高亮的效果: iOS客户端字符串中子字符串实现的代码:+(NSMutableAttributedString *)stringWithHighLightSubstring:(NSString *)totalString substring:(NSString *)substring{ NSMutableAttributedSt...

2018-06-21 16:56:07 2741

原创 iOS常用方法——计算字符串显示的大小

UILabel固定宽来获取高度或者固定高来获取宽度:-(CGSize)sizeWithStringShowSize:(CGSize)size showFont:(CGFloat)font{ //固定宽获取高度size:CGSizeMake(100, MAXFLOAT) //固定高获取宽度size:CGSizeMake(MAXFLOAT,100) CGSize s...

2018-06-21 16:29:32 1469

原创 iOS常用方法——NSDate常见处理的方法封装

NSDate转换为时间戳+(NSString *)dateChangeToTimestamp:(NSDate *)date{ NSString *timeSp = [NSString stringWithFormat:@"%ld", (long)[date timeIntervalSince1970]]; return timeSp;}时间戳转换为NSDate...

2018-06-21 16:13:48 560

原创 iOS常用方法——判断图片类型

直接用图片的后缀来判断图片的类型不一定准确,用下面的方法可以准确的判断出图片的类型。+(NSString *)contentTypeForImageData:(NSData *)data{ uint8_t c; [data getBytes:&c length:1]; switch (c) { case 0xFF: r...

2018-06-21 15:57:27 2134

原创 iOS常用方法——sha1编码和MD5编码

对string进行sha1编码:-(NSString *)stringWithSha1Encode{ const char *cstr = [self cStringUsingEncoding:NSUTF8StringEncoding]; NSData *data = [NSData dataWithBytes:cstr length:self.length]; ...

2018-06-21 15:43:35 909

原创 iOS常用方法——URL编码和URL解码

URL编码是一种常见的编码方式,作用不多说,直接上代码。URL编码: - (NSString *)URLEncodedString{ // CharactersToBeEscaped = @":/?&=;+!@#$()~',*"; // CharactersToLeaveUnescaped = @"[]."; NSString *unencode...

2018-06-21 15:25:04 12806 1

原创 iOS常用方法——NSArray、NSDictionary与json的相互转换

开发中常用到NSArray、NSDictionary转换为json格式和json解析为NSArray、NSDictionary。不多说,直接上干货。NSArray、NSDictionary转换为json:+(NSString *)objectToJson:(id)obj{ if (obj == nil) { return nil; } NSE...

2018-06-21 15:00:37 11647

ZZCycleProgressLoadingView.zip

简单的实现了圆形进度条,可直接调用就可实现圆形loading的效果,代码简洁,提供的是demo,使用简单。

2019-06-13

iOS广告轮播效果

支持本地图片和网络图片的轮播实现,支持自动播放,支持手动滑动。

2018-08-27

Mac 免费清理软件

清理Mac上的系统垃圾和缓存垃圾,可实现免费清理,解决你Mac内存不够用的问题。 免费使用教程见博客:https://blog.csdn.net/aaaaazq/article/details/80936960

2018-07-06

Mac上一个将视频和图片转为gif的工具

Mac上一个可以将视频和图片转换为gif的小工具,将视频导入之后可调节gif的帧数和时长。

2018-07-03

WKWebView与h5交互的实现

这个demo实现了WKWebView与h5的交互,里面还包含一个常用的UIVIewController的基类和WKWebView的基类,参考博客:https://blog.csdn.net/aaaaazq/article/details/79882286。 UIVIewController基类中包含了UINavigationBar的设置。 WKWebView实现了与h5的交互、加载web超时的控制、多级h5时关闭按钮的功能,继承基类后展示不同的页面非常简单。参考博客:https://blog.csdn.net/aaaaazq/article/details/80899645

2018-07-03

Swift实现自定义tableViewCell

用Swift语言实现了自定义tableViewCell。 包含了一个TableViewCell的基类以及自定义的tableViewCell类的实现和调用。

2018-07-02

iOS六种动画效果的实现

demo实现了iOS中6种动画效果的实现。 直线动画效果、爆炸点赞动画效果、心跳(放大缩小)动画效果、上下浮动效果、图片序列gif效果和直线+Gif效果。 博客地址为:https://blog.csdn.net/aaaaazq/article/details/80736594

2018-06-21

iOS自定义表情的实现

该demo实现了iOS客户单自定义表情相关功能。 自定义表情选择器——实现了类似于聊天时自定义表情的显示及选择功能。 聊天时选择表情后输入框的显示——实现了类似于微信聊天时选择表情后输入框的文字显示。 聊天消息中自定义表情的显示——实现了自定义表情的显示。

2018-06-21

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

TA关注的人

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