objective-c
RangingWon
It does not do to dwell on dreams and forget to live.
展开
-
一张图了解OpenGL的渲染架构
初学者在初学OpenGL时,很多时候会对OpenGL的渲染架构感到困惑,不清楚它是怎么一个渲染流程,常将Arributes直接传递到片元着色器,或者为了将属性直接传递到片元着色器,而通过uniform传递到片元着色器等,这样的操作都是错误的,OpenGL的数据传输都有明确的届定。下面,我们就来看看OpenGL的渲染架构并了解它的数据传输方式和特点。上面就是OpenGL的渲染架构啦,我们在...原创 2019-05-28 09:02:35 · 3222 阅读 · 1 评论 -
iOS开发中的几种设计模式
目前常用的几种设计模式:代理模式、观察者模式、MVC模式、单例模式、策略模式、工厂模式、MVVM (一)代理 场景:当一个类的某些功能需要由别的类来实现,但是又不确定具体会是哪个类实现。优势:解耦合敏捷原则:开放-封闭原则实例:tableview的 数据源delegate,通过和protocol的配合,完成委托诉求。列表row个数delegate自定义的delegat...原创 2018-08-03 11:53:20 · 211 阅读 · 0 评论 -
浅谈runloop
RunLoop是什么,有什么作用,如何获取?定义 RunLoop的实质是一个死循环,用于保证程序的持续运行,只有当程序退出的时候才会结束(由main函数开启主线程的RunLoop) 作用 保持程序的持续运行 处理App中的各种事件(触摸、定时器、Selector事件) 节省CPU资源,提高程序性能(该做事做事,没事做休息) 获取方法 使用NSRunLoop(面向对象)或者...原创 2018-08-02 14:23:29 · 319 阅读 · 0 评论 -
NSAttributedString添加链接,富文本(一段文字上添加点击事件)
通常开发中,有时候会让我实现如下图所示的功能(一段文字上添加点击事件):那我们怎么去实现呢?直接上代码://内容文本NSString *content = @"欢迎使用健康档案服务!为了让您放心使用产品及服务,请务必仔细阅读,充分理解协议中的条款内容后在点击同意,以便您更好的行使个人权利及保护个人隐私。\n\n注意:当你点击同意,即视为您已阅读并同意《健康档案服务协议》与《数字...原创 2018-08-14 16:59:00 · 9088 阅读 · 0 评论 -
iOS控件阴影效果的实现 和 为什么实现设置了视图的阴影效果的代码,阴影效果会失效?
假如,你实现了如下的代码- (void)setShodawWithView:(UIView *)view color:(UIColor *)color{ view.layer.shadowOffset = CGSizeMake(0, 5); view.layer.shadowColor = color.CGColor; view.layer.shadowRadius...原创 2018-08-10 16:44:14 · 806 阅读 · 0 评论 -
iOS 视图切部分圆角
日常开发中,可能某些需求需要我们对当前视图进行部分圆角切割,那,我们怎么去处理呢?显然view.layer.cornerRadius = cornerRadius;view.layer.masksToBounds = YES;已满足不了需求!那下面,给大家提供了一个方法,希望对大家日常开发有帮助,具体如下:/** 切部分圆角 UIRectCorner有五种 UI...原创 2018-08-10 16:34:12 · 4161 阅读 · 0 评论 -
iOS获取手机型号
日常开发中可能会需要我们获取当前设备的手机型号传给后台,那,我们怎么去得到当前手机的型号呢?下面,给大家提供了一个方法,希望对大家日常开发有帮助(目前已iphone x的手机检测)具体如下:/** 获取手机型号 @return 型号 */+ (NSString *)getIphoneType{ //需要导入头文件:#import <sys/utsna...原创 2018-08-10 16:28:08 · 1220 阅读 · 0 评论 -
基于UIPickerView的条件选择器
日常开发中,通常会需要这样子的需求,具体如下图:那接下来说下它的使用,希望能增加开发同行工作效率#import "InfoPickerView.h"@property (nonatomic, strong) InfoPickerView *pickView;- (InfoPickerView *)pickView{ if (!_pickView) { ...原创 2018-08-10 15:28:19 · 346 阅读 · 0 评论 -
iOS NSNull,nil,Nil的区别
NSNull,nil,Nil的区别: nil一般用做对象。我们给对象赋值时一般会使用object = nil,表示我想把这个对象释放掉。 Nil一般表示类为空,比如:Class classA = Nil; NSNull称它为“值为空的对象”。NSNull这个类是继承NSObject,并且只有一个“+ (NSNull *) null;”类方法。原创 2016-12-28 23:44:18 · 369 阅读 · 0 评论 -
iOSNSDate和NSDateFormatter
iOS开发中常需要对时间进行处理然后得到我们想要的。NSDate用法(1)返回系统当前时间 [NSDate date] (2)返回以指定时间(GMT)为基准,然后过了secs秒的时间 //增加时间用正数,减少时间用负数(单位是秒) [NSDate dateWithTimeInterval:3600 sinceDate:currentDat原创 2016-12-28 23:43:04 · 396 阅读 · 0 评论 -
iOS 时间格式NSDate 和 获取东八区(中国地区)时区时间
有些时候,在开发中会遇到接口需要我们提供时间做一些加密之类的操作。那下面讲讲关于时间的那些事儿:1、yyyyMMddHHmmss 与 yyyymmddhhmmssyyyy:包括纪元的四位数的年份MM:月份数字dd:月中的某一天hh:12 小时制的小时 / HH:24小时制的小时mm:分钟ss:秒2、获取东八区时区的当前时间/** 获取时间戳 @...原创 2018-08-13 11:07:36 · 7092 阅读 · 0 评论 -
runtime 动态归解档
平常开发中,有时候需要对少量存储的数据进行归档处理,但我们又不想对数据一个一个的进行处理,那,我们就能用runtime 进行动态的归解档!直接上代码://归档-(void)encodeWithCoder:(NSCoder *)aCoder{ unsigned int count = 0; // 利用runtime获取实例变量的列表 Ivar *ivars = ...原创 2018-08-13 11:33:06 · 302 阅读 · 0 评论 -
iOS 获取当前时间之后N天的日期
有时候在开发中会遇到一些需求,比如:在一个选择器,需要我们去设置它的一个时间最大选择值,从而控制它的一个时间选择段。那,我们可能会需要到一个问题,如果得到当前时间之后n天的日期呢?直接上代码:/** 得到当前时间之后N天的日期 @param day N天 @return return value description */- (NSDate *)getTimeAfter...原创 2018-08-13 16:14:52 · 1750 阅读 · 0 评论 -
OpenGL在Mac上的配置
1、创建工程打开Xcode -> macOS -> Cocoa App2、删除文件AppDelegate.h、AppDelegate.m、ViewController.h、ViewController.m、main.m3、在工程添加GLUT.framework和OpenGL.framework两个系统库4、拖入include文件到当前工程下并将libGLTools.a...原创 2019-05-16 17:49:06 · 606 阅读 · 0 评论 -
OpenGL / OpenGL ES 专业名词解析
一、简介###(1)OpenGLOpenGL(英语:Open Graphics Library,译名:开放图形库或者开放式图形库)是用于渲染2D、3D矢量图形的跨语言、跨平台的应用程序编程接口(API)。这个接口由近350个不同的函数调用组成,用来从简单的图形比特绘制复杂的三维景象。而另一种程序接口系统是仅用于Microsoft Windows上的Direct3D。OpenGL常用于CAD、...原创 2019-05-16 16:04:49 · 639 阅读 · 0 评论 -
IQKeyboardManager每次运行都会断点.m文件
APP导入了IQKeyboardManager,只要打开All Exception获取异常断点,每次编译都会捕获到一个IQKeyboardManager的断点,具体如下:那我们该怎么操作?看图看图原创 2018-10-22 16:30:59 · 519 阅读 · 0 评论 -
iOS UISlider用法总结
@property (nonatomic, weak) UISlider *progressSlider;-(UISlider *)progressSlider{ if (!_progressSlider) { UISlider *progressSlider = [[UISlider alloc] init]; progressSlider.min...原创 2018-09-18 15:05:17 · 771 阅读 · 0 评论 -
iOS 图片转base64编码
今天有人在群里问,图片怎么转成base64编码?那我就在这里说一说其实图片转成base64编码,很简单,苹果提供了方法//图片转base64UIImage *image = [UIImage imageNamed:@"eg"];NSData *data = UIImageJPEGRepresentation(image, 1.0f);NSString *encodedImageSt...转载 2018-09-17 16:58:42 · 3085 阅读 · 0 评论 -
iOS 实现APP之间内容的拷贝、分享
有时候,开发中需要我们实现“将一个APP的文件拷贝到另一个APP上并实现上传等功能”,那我们怎么去实现呢?下面介绍一种方法:App Extension 在iOS8中实现的跨APP数据操作和分享。首先新建一个工程,并指定属性就能实现上述的需求啦,具体如下图到这里,差不多就已经实现啦另外,在//9.0之前- (BOOL)application:(UIApplicatio...原创 2018-08-28 15:21:16 · 10856 阅读 · 1 评论 -
仿真动画(UIDynamicAnimator,UIGravityBehavior,UICollisionBehavior)
仿真动画 /** * 仿真器,也是仿真行为的执行者 */@property (nonatomic, strong) UIDynamicAnimator *animator;/** * 重力行为 */@property (nonatomic, strong) UIGravityBehavior *gravity;/** * 碰撞行为 */@property (n...原创 2018-08-17 15:42:23 · 653 阅读 · 0 评论 -
GitHub Please tell me who you are. Run git config --global user.email "you@example.com"
有时候,我们会在Github提交代码的时候出现了下面这个问题:Please tell me who you are.Run git config --global user.email "you@example.com" git config --global user.name "Your Name"to set your account's default identity....原创 2018-08-19 15:27:33 · 3183 阅读 · 0 评论 -
iOS动画(Core Animation)
一、CABaseAnimation /** 移动动画 */- (void)testPositionAnimation{ CGFloat tempViewWidth = 50; CGFloat tempViewY = 300; UIView *tempView = [[UIView alloc] initWithFrame:CGRectMake(0, ...原创 2018-08-16 17:03:39 · 441 阅读 · 0 评论 -
火星坐标
前言:前段时间对火星坐标产生了好奇心,查阅了一些资料,以下是整理出来的相关内容信息。1、偏移的起因:天朝测绘局以国家安全为理由,用法律的形式对所有在天朝发行的地图类产品加了强制性规范,要求所有地图类产品都必须使用国家测绘局的一种加偏移的算法,对地图的真实坐标进行加偏移处理,之后才可能通过审批准许上市。因此,天朝的所有官方及商用地图的坐标都是偏移的,这种偏移属于非线性的,偏移量在转载 2016-12-28 23:26:24 · 495 阅读 · 0 评论 -
iOS后台播放音乐
1、在Info.plist中,添加"Required background modes"键,其值(App plays audio or streams audio/video using AirPlay)设置如下图所示:2、添加AVFoundation框架,然后再添加如下两段代码添加后台播放代码(AppDelegate):AVAudioSes原创 2016-12-28 23:15:34 · 507 阅读 · 0 评论 -
iOS 获取设备唯一标示符的方法
在开发中会遇到应用需要记录设备标示,即使应用卸载后再安装也可重新识别的情况,在这写一种实现方式——读取设备的UUID(Universally Unique Identifier)并通过KeyChain记录。首先iOS中获取设备唯一标示符的方法一直随版本的更新而变化。iOS 2.0版本以后UIDevice提供一个获取设备唯一标识符的方法uniqueIdentifier,通过该方法我们可以获取设备原创 2016-12-22 16:31:01 · 375 阅读 · 0 评论 -
iOS 10对隐私权限的管理(必须要改否则会crash)
比如访问的摄像头、麦克风等硬件,都需要提前请求应用权限、允许后才可以使用,或者现在要提前声明,虽然以往要求不严格。比如在iOS10中访问通讯录时,强制必须在Info.plist中加入NSContactsUsageDescription等描述,否则应用会崩溃。***This app has crashed because itattempted to access privacy-sensiti原创 2016-12-22 11:57:28 · 1010 阅读 · 0 评论 -
iOS HTTP访问网络受限
HTTP访问网络受限,只需要在项目工程里的Info.plist添加NSAppTransportSecurityNSAllowsArbitraryLoads就能进行网络访问原创 2016-12-22 12:09:18 · 705 阅读 · 0 评论 -
iOS 根据银行卡号判断银行名称
如何根据银行卡号判断银行名称?+ (NSString *)getBankName:(NSString*) cardId{ //"发卡行.卡种名称", NSArray* bankName = @[@"邮储银行·绿卡通" , @"邮储银行·绿卡银联标准卡" , @"邮储银行·绿卡银联标准卡" , @"邮储银行·绿卡专用卡" , @"邮原创 2016-12-22 11:54:42 · 2575 阅读 · 0 评论 -
fmdb 数据库的基本操作
/** * 创建表 */- (void)createTable{ //1.初始化数据库对象 并且 2.打开数据库 BOOL isOpenSuccess = [self.database open]; NSLog(@"数据库打开%@",isOpenSuccess?@"成功":@"失败"); //3.创建表原创 2016-12-22 11:53:13 · 360 阅读 · 0 评论 -
iOS 域名解析
如何在iOS下进行域名的解析? /** * 域名解析ip * * @param hostName 域名 * * @return ip */+(NSString *) getIPWithHostName:(const NSString *)hostName{ const char *hostN= [h原创 2016-12-22 11:51:05 · 998 阅读 · 0 评论 -
判断用户输入的银行卡号是否正确--基于Luhn算法的格式校验
开发中,有时候,为了打造更好的用户体验,同时减轻服务器端的压力,需要对于一些如,手机号码,银行卡号,身份证号码进行格式校验下面是判断银行卡号输入是否正确的代码(基于Luhn算法的格式校验):iOS代码:/** * 银行卡格式校验 * * @param cardNo 银行卡号 * * @return */+ (B原创 2016-12-22 11:48:47 · 845 阅读 · 0 评论 -
iOS应用中的相关正则及验证
1.手机号码的验证正则正则表达式:^((13[0-9])|(15[^4,\\D])|(18[0,0-9]))\\d{8}$详细解释解释:^...$: ^:开始 $:结束中间为要处理的字串(13[0-9]): 以13开头接下来一位为0-9之间的数原创 2016-12-22 11:45:36 · 332 阅读 · 0 评论 -
iOS 设置状态栏的背景颜色
设置状态栏的背景颜色- (void)setStatusBarBackgroundColor:(UIColor *)color{ UIView *statusBar = [[[UIApplication sharedApplication] valueForKey:@"statusBarWindow"] valueForKey:@"statusBar"];原创 2016-12-22 11:43:09 · 403 阅读 · 0 评论 -
iOS 设置UILabel的行间距并自适应高度
NSString *contentStr = @"总以为,在最初的地方,有一个最原来的我,就也会有一个最原来的你"; UILabel *tempLabel = [[UILabel alloc] init]; //设置背景颜色 tempLabel.backgroundColor = [UIColor redColor]; //设置内容 tempLab原创 2016-12-22 17:38:33 · 393 阅读 · 0 评论 -
iOS中NSLog输出格式大全
iOS开发中的输出格式大全:%@ 对象%d, %i 整数%u 无符整形%f 浮点/双字%x, %X 二进制整数%o 八进制整数原创 2016-12-22 17:43:18 · 421 阅读 · 0 评论 -
iOS UITableView禁止回弹
//设置回弹tableView.bounces = NO;原创 2016-12-22 23:42:10 · 4746 阅读 · 0 评论 -
iOS pch文件的作用和用法(附:在release版本禁止输出NSLog内容)
一. pch文件的作用和用法(Xcode > 4.0)pch全称是“precompiled header”,也就是预编译头文件。开发的过程中可以将广泛使用的头文件以及宏包含在该文件下,编译器会自动将pch文件中的头文件,添加到所有的源文件中去。这样在需要使用相关类的时候不需要使用import就可以直接使用头文件中的内容,很大程度上带来了编程的便利性。但是在Xcode6中去掉Precom原创 2016-12-26 23:29:59 · 548 阅读 · 0 评论 -
CAlayer层的属性position和anchorPoint
1.简单介绍CALayer有2个非常重要的属性:position和anchorPoint@property CGPoint position;用来设置CALayer在父层中的位置以父层的左上角为原点(0, 0) @property CGPoint anchorPoint;称为"定位点"、"锚点"决定着CALayer身上的哪个点会在posi原创 2016-12-25 22:48:08 · 522 阅读 · 0 评论 -
小谈Socket通讯
前言 我们每天打开浏览器浏览网页是,浏览器的进程怎么与web服务器通信的?当你用微信聊天时,微信进程怎么与服务器或者微信好友所在的微信进程通信?这些都得靠Socket,那什么是Socket?今天就来小谈Socket。1、什么是Socket? Socket的英文原义是“孔”或“插座”。作为BSD UNIX的进程通信机制。通常也称作“套接字”原创 2016-12-24 16:08:51 · 391 阅读 · 0 评论 -
iOS开发证书变成"此证书的签发者无效"解决方法
iOS开发证书全部变成无效,如下图 打包提示错误:解决方法: 1. 下载https://developer.apple.com/certificationauthority/AppleWWDRCA.cer的证书,然后双击安装。 2. 打开钥匙串访问,在导航栏那边,显示-显示已过期的证书 3. 点击 “登录”,并且选择 “所有项原创 2016-12-24 11:23:42 · 432 阅读 · 0 评论