自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

Andy Coding

书山勤径,学海苦舟。

  • 博客(25)
  • 资源 (2)
  • 收藏
  • 关注

原创 iOS 可拖拽排序的UICollectionView

系统的UICollectionView和UITableView有提供在编辑态拖拽排序的功能,但是需要指定的EditStyle,而且还只能拖动排序按钮区域,大部分时候效果很难满足业务需求,因此我们需要定制可拖拽Cell的SDMovableCellCollectionView,拖拽效果类似于系统Reminder。文章最后附有Demo的Git地址,可查看完整代码,如有疑问和不妥,评论区交流。

2023-03-22 22:52:52 1764 2

原创 iOS手势全屏滑动返回

iOS系统是自带侧滑返回的,但一定要是边缘返回,不是全屏,可能是手势冲突的的原因,苹果肯定是有自己的考虑。但是开发者们,思路开阔,开发了全屏滑动返回的效果,和大家分享一种最简单有效的方案。

2022-09-02 13:22:09 1777

原创 iOS 进阶设计之图片角度旋转算法

在图片编辑领域有很多不错的交互设计,比如涂鸦、裁剪、水印、旋转等,一般在网上我们能找到类似微信的实现方案。但是如果想要实现类似系统图片的角度旋转,也就是WhatApp和Telegram他们那样所实现的图片角度旋转裁剪,所书寥寥无几。笔者踏破铁鞋,绞尽脑汁,终于实现了图片角度旋转的算法,在此和需要的朋友一起分享。.....................

2022-08-05 13:26:59 940 5

原创 iOS 系统分享UIActivityViewController,自定义分享预览UI

UIActivityViewController继承自UIViewController,是一个系统分享组件,它提供了一些通用的标准服务(AirDrop、Messages,Mail)等,类似于照片里点击分享功能。 国内App可能用的相对较少,一般都是对接友盟分享之类的。网上针对UIActivityViewController的使用介绍虽然有不少,但是却很少有介绍分享预览时的Header区域UI定制,笔者最后在stackoverflow上找到了答案,还参考了国外大神的写法,写下了这篇文章,希望能帮助到大家。先

2022-04-20 11:52:42 5312

原创 iOS 进阶UI设计之部分圆角、单边阴影、虚线边框、绘制虚线

当App做到一定程度时,UI设计就是要锱铢必较了,圆润丝滑的视觉设计会让人感觉更舒服,笔者总结了常见的几种UI设计的绘制方案,本质上就是在图层上进行一定的绘制。部分圆角:注意:iOS 11.0以下的系统,如果是自动布局,绘制之前必须让父类调用 layoutIfNeeded,确定好view的Frame。/// 绘制部分圆角/// @param rectCorner 圆角样式/// @param radii 圆角- (void)drawCornerWith:(UIRectCorner)rectCor

2022-02-23 17:18:57 2714

原创 iOS WKWebView 设置默认系统字体

一般来讲,苹果系统提供的控件的字体基本都是跟随系统,但是WKWebView却不是,可能是网页的兼容性有自己的考虑。现在我的App里只有WKWebView的字体不跟着系统走,视觉上很别扭,严格的UI设计师也不会通过。笔者翻遍百度和stackoverflow也没找到WKWebView的默认字体是什么?如何修改成跟随系统倒是在stackoverflow找到?最后在国外大神的一遍文章里找到了答案,和大家一起分享。By default, if you don’t specify a font family in

2022-02-18 17:22:11 2494

原创 iOS 设置圆角和阴影并存(部分圆角)

为什么圆角和阴影不能共存?Because shadow is an effect done outside the View, and that masksToBounds set to YES will tell the UIView not to draw everything that is outside itself.大概意思是:阴影作用于视图外部,而圆角设置裁剪会把画在视图外面的所有东西裁掉。解决方案:那么我们可以在View上创建一个CALayer,制作阴影,让它位于我们需要添加阴影的圆角

2022-02-18 16:50:33 5141

原创 iOS 监听控制器左滑返回

系统提供的方案:UIViewController的类别UIContainerViewControllerCallbacks中定义了两个方法:- (void)willMoveToParentViewController:(nullable UIViewController *)parent API_AVAILABLE(ios(5.0));- (void)didMoveToParentViewController:(nullable UIViewController *)parent API_AVAILAB

2021-09-15 11:38:16 1633

原创 iOS10 推送通知进阶之 Service Extension

iOS10 添加两个通知相关的Extension:Service Extension 和 Content Extension。我们先来学习一下看一下Service Extension。简介UNNotificationServiceExtension是iOS10推出后的一个新特性,看图说话:从图中可以看出,原来直接从APNS推送到用户手机的消息通知,中间添加了ServiceExtension处理(当然也可以不处理)。通过ServiceExtension,我们可以把即将呈现给用户的通知内容,做各种修改和

2021-07-01 17:04:14 835

原创 iOS 中 App 与 Extension 之间发送通知

有时候我们需要在Extension中数据变化时通知到主App,做一些操作。 NSNotificationCenter是做不到的,它只在App内部工作而不会在两个App之间发送通知。这时我们就可以使用系统级的通知中心:CFNotificationCenter,使用时和NSNotificationCenter类似,注意监听和移除。// 发送通知- (void)postCFNotificaiton { CFNotificationCenterRef noti = CFNotificationCenterGe

2021-07-01 11:30:13 891

原创 Swift 4.0 UIButton按钮防止重复点击(黑魔法)

按钮的重复点击是我们开发中必须要考虑的情况,否则会带来意想不到的bug,甚至是崩溃。解决方法有很多种,但是要想全局处理防止按钮重复点击,最优雅的方法就是利用Runtime在运行时进行方法交换来处理。实现思路定义一个属性关联的结构体,结构体中定义点击间隔和是否可点击两个属性;使用Runtime关联属性;实现方法交换;Swift 4.0中initialize()已经被废弃 所以需要自定义一...

2019-06-03 15:57:02 2870

原创 swift 4.0中访问控制private、fileprivate、internal、public、open的区别

Swift 4.0中访问控制权限由低至高提供了 private,fileprivate,internal,public 和 open 五种。默认的 internal 在绝大部分时候是适用的,但是对于一个严格的项目来说,精确的最小化访问控制级别对于代码的维护来说还是相当重要的。尤其是当我们开发SDK时,这些访问权限就更为重要了。private: private 修饰的属性或方法只能在当前类中访问...

2019-04-18 11:27:27 561

原创 const static extern 宏 的区别使用

当我们查看一些第三方库时,经常会看到大牛对 const、static、extern、宏 的区别使用,以及 const 和 static,const 和 extern 的结合使用,究竟为什么要这么用,本文就来探究一下。宏: 预编译时加载;没有编译检查;能定义函数、方法、变量等;大量使用宏时,预编译时间过长;const: 编译时加载;有编译检查;不能修饰函数和方法;修饰的变量是只读的;stat...

2019-02-25 17:45:07 212

原创 iOS 单元测试

很多开发者都听说过单元测试,但是在实际开发中我们却很少使用到单元测试,一般流程规范的大项目一般都会做单元测试,下面主要介绍 Xcode 自带的 XCTest 测试工具。单元测试单元测试(unit testing),是指对软件中的最小可测试单元进行检查和验证。如C语言中的一个函数,Java里的一个类等。总的来说,单元就是人为规定的最小的被测功能模块。单元测试是在软件开发过程中要进行的最低级别的测...

2019-02-21 16:26:10 464

原创 Core Text 原理浅谈

iOS 开发中经常会遇到一些文字排版或者图文混排的需求,在 iOS7 以前一般都使用 CoreText 来处理这样的需求,iOS7 之后可以使用系统的 TextKit ,TextKit 是对 CoreText 的封装。CoreText 是用于处理文字和字体的底层技术,它直接和 Core Graphics 交互;它真正负责绘制的是文本部分,如果要绘制图片,可以使用 CoreText给图片预留出位置...

2019-01-24 17:09:53 1393

原创 iOS多线程方案之NSOperation详解

iOS开发中一共有四种多线程方案:Pthreads、NSThread、GCD、NSOperation。Pthreads:是线程的 POSIX 标准。该标准定义了创建和操纵线程的一整套 API,是基于 C 语言的框架。NSThread:是苹果封装后的,完全面向对象的类库。但是线程的生命周期还需要我们手动管理,不常用。GCD:是苹果为多核并行运算提供的线程方案,它会自动管理线程的生命周期(创建...

2018-11-14 14:55:22 374

原创 iOS多线程方案之GCD详解

iOS开发中一共有四种多线程方案:Pthreads、NSThread、GCD、NSOperation。Pthreads:是线程的 POSIX 标准。该标准定义了创建和操纵线程的一整套 API,是基于 C 语言的框架。NSThread:是苹果封装后的,完全面向对象的类库。但是线程的生命周期还需要我们手动管理,不常用。GCD:是苹果为多核并行运算提供的线程方案,它会自动管理线程的生命周期(创建...

2018-11-12 17:45:59 524

原创 使用CocoaPods创建开源库和私有库详解

笔者看了许多关于使用CocoaPods创建开源库的文章,大都写的不尽详细,尤其是对于从来没有创建过开源库的同学,不知道哪个步骤文章没写,在验证 .podspec 文件时就一堆错误,一脸懵逼。本文是一篇从零开始创建一个自己的开源库分享,如有问题,评论交流。首先,你需要注册一个CocoaPods账号,email使用你的GitHub邮箱,起一个用户名,打开终端:pod trunk register ...

2018-10-31 11:36:41 1247 1

原创 Swift 4.0 编码规范,持续更新中...(已更新Swift 5.0)

自Swift 3.0 以来,语言已经比较成熟,用Swift语言来开发iOS App 的开发者越来越多,那么一份权威而全面的规范就很有必要了。苹果官方的文档一般都很少去看,笔者参考官方文档和各路大神的经验,写下了一份基于Swift 4.0 的编码规范,并会持续更新,欢迎大家补充指正。编码格式命名规范语法规范1. 编码格式1.1 使用二元运算符(+, -,==,

2018-01-21 17:18:47 5337 2

原创 iOS开发之KVC和KVO原理解析和实例分析

在iOS开发中,苹果提供了许多机制给我们进行回调,代理,通知,block等。其中KVO(key-value-observing)是一种很实用的监听回调机制,KVO又基于KVC(key-value-coding)。

2017-12-07 17:24:19 896

转载 iOS11适配 以及会遇到的坑

关于适配iOS11和iPhone X 应该注意的坑。

2017-11-29 23:05:20 2174

原创 iOS之UITextView实现placeHolder占位文字的最佳方法

在iOS开发中,UITextField和UITextView是最常用的文本输入类和文本展示类的控件。不同的是,UITextField中有一个placeholder属性,可以设置UITextField的占位文字,可是,Apple没有给UITextView公开提供一个类似于placeholder这样的属性来供开发者使用。笔者比较了各种实现方法,推荐下面的自定义方法。

2017-11-28 11:55:54 1003

原创 UIView和CALayer是什么关系?

本文主要分享一下UIView和CALayer的关系,在理解视图原理和面试方面都能用得到,若有不足之处,欢迎交流。

2017-09-05 14:27:35 3607

原创 assign weak retain strong copy关键字的区别

在iOS开发中定义@property属性时,经常用到assign、weak、retain、strong、copy等关键字。我们经常会考虑在何时应该使用哪个关键字,尤其是在面试的时候,经常会被问到这些关键字之间的区别,下面详细和大家探讨一下: assign:用于对基本数据类型进行赋值操作,不更改引用计数。也可以用来修饰对象,但是,被assign修饰的对象在释放后,指针的地址还是存在的,也就是...

2016-05-21 00:11:16 6965

原创 Cocoapods安装最新教程--适配OS X EL Capitan 和 ruby-china新域名

使用CocoaPods的必要性?CocoaPods是iOS开发最常用最有名的类库管理工具了,通过cocoaPods,可以快速方便的导入多第三方开源类库,比如JSONKit,AFNetWorking等。重要的是,绝大部分有名的开源类库,都支持CocoaPods。所以,作为一名iOS程序员,掌握CocoaPods的使用是必不可少的基本技能了。但是苹果系统升级OS X EL Capitan Coco...

2016-05-20 14:35:08 579

最全全球国家地区代码、手机区号JSON文件

最全全球国家地区代码、手机区号JSON文件。笔者参考iOS系统和WhatsApp的地区选择功能和以及两个国外标准网站(https://www.iso.org/obp/ui/#search;https://countrycode.org/albania),花费半天时间,整合而成。希望能帮助到需要的你。不以赚钱为目的,只为帮助更多需要的人。

2023-03-31

51单片机控制GSM模块发短信程序

这是51单片机控制GSM模块收发短信的程序,希望可以帮到你

2014-04-26

51单片机教程,可直接使用

先学会单片机再深入嵌入式,本资源为需要学的朋友们提供一个好的资料!希望参考!

2012-10-27

空空如也

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

TA关注的人

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