IOS

IOS Ble蓝牙开发实现方法

2019-12-23
本篇博文阐述如何开发Ble蓝牙.在蓝牙中的一些常见服务,扫描,以及链接: 主蓝牙类文件.h 主蓝牙类文件.m UUID文件 蓝牙列表展示的文件 一:引入Ble蓝牙的框架<CoreBluetooth/CoreBluetooth.h> BuleHelp.h #import <Foundation/Foundation.h> //导入蓝牙框架 #import <CoreBluetooth/CoreBluetooth.h> #import "DeviceModel.h

iOS蓝牙开发 蓝牙连接和数据读写

2019-12-23
在做蓝牙开发之前,最好先了解一些概念: 服务(services):蓝牙外设对外广播的必定会有一个服务,可能也有多个,服务下面包含着一些特征,服务可以理解成一个模块的窗口: 特征(characteristic):存在于服务下面的,一个服务下面也可以存在多个特征,特征可以理解成具体实现功能的窗口,一般特征都会有value,也就是特征值,特征是与外界交互的最小单位: UUID:可以理解成蓝牙上的唯一标识符(硬件上肯定不是这个意思,但是这样理解便于我们开发),为了区分不同的服务和特征,或者给服务和特征取

IOS-MVC层读取服务器接口JSON数据

2019-12-23
此篇文章主要讲述获取服务器JSON接口数据,以便大家在今后的物联网信息时代,移动数据肯定都是需要网络数据的,那么就需要用一个分布集中,整体化的,规范性的创建所需的文件,同时方便以后维护: 分别为:M(model),M(manager),V(view),C(cell),C(controller); 具体程序如下: 一:YSMasonryManager.h #import <Foundation/Foundation.h> #import "BaseManager.h" #im

iOS蓝牙开发数据实时传输

2019-12-22
随着iOS项目开发  很多app需要通过蓝牙与设备连接 蓝牙开发注意: 先定义中心设备和外围设备以及遵守蓝牙协议 @interface ViewController()<CBCentralManagerDelegate,CBPeripheralDelegate> @property (strong, nonatomic) CBCentralManager *manager; @property (nonatomic, strong) CBPeripheral *peripheral; @pro

IOS自定义UIButton九宫格效果

2019-12-22
此篇文章给大家描写如何写自定义九宫格,因为在开发中,这种需求也是常见不少.因此,主要利用UIButton阐述的: 实列不复杂,就两三个步骤完成: 一.定义宽度与高度(self.view) #define SCREEN_WIDTH [UIScreen mainScreen].bounds.size.width #define SCREEN_HEIGHT [UIScreen mainScreen].bounds.size.height #define JHRGB(r,g,b) [UIColor co

两行IOS代码实现轮播图

2019-12-22
此篇文章讲述IOS轮播图,仅需要几步就可以完成,很简单了. 第一步:利用cocopods导入KJBannerView组件 #import "KJBannerView.h" 第二步:在m文件加入代理 <KJBannerViewDelegate> //并且定义组件 @property (nonatomic,strong) KJBannerView *banner2; 第三步:实现就仅此一步 -(void)initData{ KJBannerView *banner2 = [[K

iOS实现锁屏页面控制音乐播放

2019-12-22
本文实例为大家分享了iOS锁屏页面控制音乐播放的具体代码,供大家参考,具体内容如下 //1.调整音频会话设置,确保应用进入后台或静音开关已开启时音频仍将继续播放 //2.锁屏状态下显示媒体信息 //3.锁屏上的空间可以控制音频播放 #import "ViewController.h" #import <AVFoundation/AVFoundation.h> #import <MediaPlayer/MediaPlayer.h> @interface ViewC

iOS音乐后台播放及锁屏信息显示

2019-12-22
本文实例为大家分享了iOS实现音乐的后台播放,以及播放时,可以控制其暂停,下一首等操作,以及锁屏图片歌曲名等的显示 此实例需要真机调试,效果图如下: 工程下载:github工程下载 实现步骤: 1.首先修改info.plist 2.其次引入两个需要的框架 #import <AVFoundation/AVFoundation.h> #import <MediaPlayer/MediaPlayer.h> 3.设置播放器及后台播放 - (void)viewDidLoad { [super

详解iOS 轻松获取当前控制器的正确方式

2019-12-20
背景 在开发过程中,经常需要获取当前 window, rootViewController, 以及当前正在显示的 visibleController 的需求. 如果 .m 实现不是在当前视图情况下, 我们需要快速的获取到当前控制器, 这种情况就需要先做好一层封装,我一般是通过 UIViewController 写的一个 Category 来实现, 实现起来也非常简单, 只需要我们对 控制器几个方法掌握便可. 获取根控制器 + (UIViewController *)jsd_getRootView

iOS仿AirPods弹出动画

2019-12-12
本文实例为大家分享了iOS仿AirPods弹出动画的具体代码,供大家参考,具体内容如下 效果图 预览图 思路 在当前ViewController下Present另外一个AnimationViewController,在弹出的AnimationViewController中播放动画,弹出的时候原来的ViewController上有一个全屏覆盖的maskView,在弹出时,有一个渐变动画(页面渐黑),在AnimationViewController声明一个代理,在代理方法中实现收起的动画效果(dis

iOS实现秒杀活动倒计时

2019-12-09
IOS关于大型网站抢购.距活动结束,剩余时间倒计时的实现代码,代码比较简单,大家根据需求适当的添加修改删除代码 1.定义4个 Label 来接收倒计时: @property (weak, nonatomic) IBOutlet UILabel *dayLabel; @property (weak, nonatomic) IBOutlet UILabel *hourLabel; @property (weak, nonatomic) IBOutlet UILabel *minuteLabel; @

iOS 通用链接(Universal Link)配置详解

2019-11-26
iOS 通用链接(Universal Link)配置 什么是通用链接? 通用链接是iOS9推出的一项新功能,如果你的应用(app)支持通用链接(Universal Link)之后,iOS用户能够在点击网页的链接的时候无缝的重定向到已经安装的app,不需要额外的任何操作.如果没有安装对应的app,那么点击链接会使用Safari打开网页.在iOS9以前,对于各种浏览器,Safari中唤醒app的需求,我们通常是只能使用scheme的方式. 为什么要突然改用通用链接的配置方式? 我们的项目中唤起第三方

iOS13 适配和Xcode11.0踩坑小结

2019-11-26
iOS13中presentViewController的问题 更新了Xcode11.0 beta之后,在iOS13中运行代码发现presentViewController和之前弹出的样式不一样. 会出现这种情况是主要是因为我们之前对UIViewController里面的一个属性,即modalPresentationStyle(该属性是控制器在模态视图时将要使用的样式)没有设置需要的类型.在iOS13中modalPresentationStyle的默认改为UIModalPresentationAu

Mac OSX 打开原生自带读写NTFS功能(图文)

2019-11-24
最近买了一个移动硬盘,发现在mac osx上可读不可写,以为移动硬盘有问题,但是却可在我的windows本上完美读写,于是百度了一下.发现其实最早在OSX 10.5的时候,OSX其实原生就支持直接写入NTFS的盘的,后来由于微软的限制,mac关闭了这个功能,所以接下来我们要通过命令行打开这个ntfs读写功能. 一.查看磁盘的Volume Name 打开 terminal 执行diskutil list 查看volume name 可以看到我的volume name是My Passport 二.更

iOS实现模拟定位功能的示例代码

2019-11-20
前言 App中越来越多的功能依赖用户实际的位置,例如基于用户位置提供推荐数据.基于定位判断某些功能是否可用,但是在开发调试中XCode却没有提供自定义的模拟定位的功能,所以本文主要的目的是现实一个可以在开发调试过程中随时模拟定位的功能. 思路 我们在iOS的app开发中通常采用的是CLLocationManager来获取用户当前的位置,当然也可以采用MKMapView的showUserLocation来获取用户的位置,所以我们分别针对这两种情况分析. CLLocationManager 采用CL

IOS 图片存放3种方式的实现

2019-10-26
Image.xcassets 创建 .xcassets,以 Image Set 形式管理图片,添加图片后会生成对应的 content.json 文件 加入 @2x 和 @3x 等倍图后,打包后以 Assets.car 的形式存在, 使用 [UIImage imageNamed:@"xxx"] 方式读取图片,可以使用图片缓存 -- 相当于创建了一个 key-value的字典,key 为图片名,value 为图片对象.创建图片对象后,该对象被加入到 NSCache 中(解码后的 Image

详解iOS平台调用后台接口的正确姿势

2019-10-23
前言 做iOS开发,除非你做的是单机应用,否则一定避免不了接口调用,也就是所谓的API调用. 而对于这方面,每个公司定义接口的格式不尽相同,从而导致我们的代码没法达到通用. 甚至你接私活的话,更会遇到五花八门的接口格式.那么有没有一种通用的方式来处理这些不通用的格式呢? 我尝试从变化的接口格式中找到不变的东西,把这些不变的东西进行可配置,从而形成以不变应万变的接口调用方式. 这些不变的东西,包括如下几种: 错误码 错误消息 业务数据 而对于错误码又可以分如下几类: 成功 失败 token失效 基

iOS ScrollView嵌套tableView联动滚动的思路与最佳实践

2019-10-19
前言 随着业务的发展,页面的复杂度越来越高,嵌套滚动视图的方式也越来越受设计师们的青睐,在各大电商App十分常见.如下Demo图: 但是这样的交互官方并不推荐,而且对开发来说确是不那么友好,需要处理滚动手势的冲突,页面的多层级嵌套都给开发带来了一定程度的麻烦.接下里我聊聊我们的实现思路. 思路和过程 对应这种页面结构应该毫无疑问是最底层是一个纵向滚动的scrollView,它的页面上面放一个固定高度的header,紧接着下面一个支持横向滚动切换的容器scrollView,容器上面才是各个页面具体

iOS常见算法以及应用知识点总结

2019-10-18
算法比较 关键词 二分 递归 分治 回溯 冒泡排序 思想:两次循环,外层进行循环次数的控制,内层循环,进行数据之间的比较,大的数据上浮(下沉) #pragma mark - Objective-C //冒泡排序 - (void)bubbleSort:(id)array{ if (!([array isKindOfClass:[NSArray class]] || [array isKindOfClass:[NSMutableArray class]])) { NSLog(@"传入的参数不是数组类

iOS多Target环境配置的完整步骤

2019-10-14
在项目的开发中, 经常会有测试.正式环境, 下面就来配置一下这两个环境: 一:拷贝源Target (1): 拷贝源Target (2): 更改Target的名称 拷贝结束之后, 将拷贝的Target的名称改为"TestDemo_dis" (3): 更改Scheme的名称 二: 更改General 和 Signing & Capabilities 中的信息 (1)更改测试环境下的General 和 Signing & Capabilities 中的信息 (2)更改正式环境