iOS随手记
建古
你没有变,是别人根本不了解你的人生
展开
-
Flutter架构设计
1、如果是新项目一般使用统一管理模式,如果是在原生项目上集成Flutter模块,一般是三端分离模式2、架构设计大纲下面是我的画的一个架构大纲总览。原创 2021-08-07 22:44:31 · 492 阅读 · 0 评论 -
Flutter环境变量配置
1、打开配置文件方式一:vim ~/.bash_profile vim编辑退出vim: 编辑状态下,按esc, 输入 :wq 保存退出方式二:open ~/.bash_profile 打开配置文件 可视化编辑2、编辑配置文件export PATH=/Users/yangjian/Documents/Flutter/flutter/bin:$PATHexport PUB_HOSTED_URL=https://pub.flutter-io.cnexport FLUTTER_STORAGE_BAS原创 2021-07-30 10:52:41 · 737 阅读 · 0 评论 -
iOS 修改TextField中 placeholder颜色
// 利用kvc 修改 颜色 [self.userNameTextField setValue:[UIColor whiteColor] forKeyPath:@"_placeholderLabel.textColor"]; [self.passwordTextField setValue:[UIColor whiteColor] forKeyPath:@"_placeholderL原创 2016-09-08 22:33:04 · 401 阅读 · 0 评论 -
iOS 指定压缩大小(UIImage扩张)--Swift/OC版
UIImageExtension.swift//// UIImageExtension.swift// GongFuBaoSwift//// Created by GongHui_YJ on 16/8/12.// Copyright © 2016年 杨建. All rights reserved.//// _ooOoo_/原创 2016-08-13 10:19:35 · 2427 阅读 · 0 评论 -
iOS多线程编程(四)------ GCD(Grand Central Dispatch)
一、简介 是基于C语言开发的一套多线程开发机制,也是目前苹果官方推荐的多线程开发方法,用起来也最简单,只是它基于C语言开发,并不像NSOperation是面向对象的开发,而是完全面向过程的。如果使用GCD,完全由系统管理线程,我们不需要编写线程代码。只需定义想要执行的任务,然后添加到适当的调度队列(dispatch_queue).GCD会负责创建线程和调度你的任务,系统会直接提供线原创 2016-08-24 20:34:34 · 1970 阅读 · 0 评论 -
iOS多线程编程(二)------ NSThread
iOS多线程开发一 使用NSThread 因为这个在实际开发项目中用的不多,所以会简单使用就好一、NSThread(显示创建线程) 有两种方式创建线程,在主线程中更新UI,只能传一个参数,停止线程调用exist方法 1.类方法 +(void)detachNewThreadSelector:(SEL)selector toTarget:(id)target withObject:(id)argu原创 2016-08-23 20:25:23 · 358 阅读 · 0 评论 -
iOS多线程编程(一)------ 基本概念
一、概述 在开发过程中,最烦的就是等待时间很长,比如开发过程中,编译器突然卡了,什么也操作不了,只能等待,这个时候是最揪心的。又不能强制关了,怕有些数据没有保存。 在用户使用我们的开发的应用的时候,也一样,尽量让用户减少等待时间,尽可能快的完成运算。二、什么是多线程 每个正在系统上运行的程序都是一个进程。每个进程包含一到多个线程。进程也可能是整个程序或者部分程序的动态执行。线原创 2016-08-23 20:11:37 · 364 阅读 · 0 评论 -
iOS多线程编程(三)------ NSOperation
一、NSOperation简介1、NSOperation比NSThread用起来方便许多,也更多的满足了我们的需求。 2、NSOpertion 与 NSOperationQueue 结合使用; NSOperationQueue 相当于一个管理器, 来管理线程操作,只要将一个NSOperation(实际开发中需要使用其子类 NSInvocationOperation、NSBlockOperat原创 2016-08-23 20:39:25 · 461 阅读 · 0 评论 -
iOS---NSNotification使用解析
一、使用步骤 使用NSNotification很简单, 只要三步 1、添加观察者 在需要的地方注册要观察的通知[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(update:) name:@"userName" object:nil];2、发送通知 在某地方发送通知NSDiction原创 2016-08-30 14:53:40 · 612 阅读 · 0 评论 -
iOS开发中(null)与<null>的处理
经常解析数据的时候后台会返回 和 (null) 这样的数据, 但在OC中这两个是不一样的。null 使用 == if(m_result==nil) { NSLog(@”KDA!”); }还有就是使用如下 if([m_result isEqual:[NSNUll null]]) { NSLog(@”KDA!”); }补充: 判断一个字符串是否为空的时候 有时候 遇到原创 2016-05-25 20:13:19 · 5405 阅读 · 0 评论 -
XCode自定义模板(支持OC和Swift)
下载的模板地址可以直接使用,但要在项目中创建BaseViewController类 也可以自己修改。模板地址:http://download.csdn.net/detail/yj229201093/9589557原创 2016-08-02 15:06:56 · 480 阅读 · 0 评论 -
Objective-C ---强大的KVC(key valued coding 键值编码) 详解
以前KVC只是简单会用,但不了解KVC的真正强大,突然觉得,现在能在功能上都实现,但却不懂一些机制的特性,从此我在慢慢捡回来,发现了解一些原理还是蛮有趣的。今天学习下KVC机制。一、简介 KVC key valued coding 键值编码 KVC通过键值间接编码 如果想要设置类的私有变量的值,开通通过KVC来设置和获取 KVC提供了一种在运行时而非编译时动态原创 2016-08-25 20:00:12 · 915 阅读 · 0 评论 -
iOS---KVO(Key Value Observing) 观察者模式之解析与应用
一、概述 KVO(Key Value Observing) 观察者设计模式。通过KVO这种机制对象可以通过它得到其他对象的某个属性的变更通知。KVO可以让视图对象经过控制器观察模型对象的变更从而做出更新等操作。 KVO提供一种机制,指定一个被观察对象(例如StockData类),当对象某个属性(如StockData中的变量 price)发生更改时,对象会获得通知,原创 2016-08-26 18:17:21 · 1094 阅读 · 0 评论 -
iOS开发 改状态栏颜色
状态栏分为两种颜色,默认的是黑色,想要改成白色,只需两步 第一步:在项目plist文件,添加view controller-based status bar appearance ,设置成NO。 第二步:在appDelete里面添加代码- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(N原创 2016-09-08 21:22:05 · 338 阅读 · 0 评论 -
机型尺寸
5 640x11366/7/8 750x13346/7/8p 1242x2208X/Xs 1125x2436XsMax 1242x2688XR 828x1792原创 2018-12-25 17:57:24 · 231 阅读 · 0 评论 -
ios10相机 相册等权限问题
要适配iOS10 需要修改一些权限 苹果对iOS权限的问题要求更高了 设置也很简单,在info.plist —Source Code<!-- 相册 --> <key>NSPhotoLibraryUsageDescription</key> <string>App需要您的同意,才能访问相册</string> <!-- 相机 --> <key>NSCameraUsageDescription<原创 2016-10-25 20:01:48 · 823 阅读 · 0 评论 -
iOS字典 setValue 和 setObject的区别
实例说明NSString name = @"张三";NSString name1 = nil;NSMutableDictionary *paramters = [[NSMutableDictionary alloc] init];[paramters setObject:name forKey:@"userName"]; // 不会奔溃NSMutableDictionary *paramters原创 2016-10-24 20:38:39 · 3609 阅读 · 0 评论 -
AFNetWorking3.0 处理请求头 和 请求内容
封装一个AFN处理请求头 和 请求内容/** * 对AFNetWorking进行基本封装(不处理code值, 不显示HUD) * * @param urlString 请求url * @param parameters 参数 * @param success 请求成功,含code值的 数据 * @param failure 请求失败 */+ (void)bas原创 2016-10-24 20:16:13 · 2947 阅读 · 0 评论 -
UIStoryboard的简单封装
在项目中很多人使用storyboard开发,这里跳转的我列举几种方法第一种方法应该是大家用的最多的UIStoryboard *storyboard = [UIStoryboard storyboardWithName:kOwnerMineStoryBoard bundle:nil];OwnerPersonalInformationViewController *ownerPersonalInfor原创 2016-11-02 15:47:08 · 631 阅读 · 0 评论 -
取消iOS10和iOS9以下导航栏黑线
if ([self.navigationController.navigationBar respondsToSelector:@selector( setBackgroundImage:forBarMetrics:)]) { NSArray *list=self.navigationController.navigationBar.subviews; for (原创 2016-10-22 18:45:29 · 1227 阅读 · 0 评论 -
iOS10 去掉导航栏分割线
if ([self.navigationController.navigationBar respondsToSelector:@selector( setBackgroundImage:forBarMetrics:)]) { NSArray *list=self.navigationController.navigationBar.subviews; for (原创 2016-09-27 20:28:33 · 1758 阅读 · 0 评论 -
修改TextView的placeholder
修改TextView的placeholder使用runtime 使用kvc- (void)setupTextView{ // _placeholderLabel UILabel *placeHolderLabel = [[UILabel alloc] init]; placeHolderLabel.text = @"请输入您宝贵的意见或建议。(200字以内)";原创 2016-10-22 18:38:34 · 533 阅读 · 0 评论 -
iOS9 3DTouch 新特性之实现过程—OC版
一、前言 因最近入手一个6sp, 看着3DTouch 挺好玩的,就想自己实现下, 3D Touch 听上去好高端,很难开发的样子,但原来那么简单,往往看着复杂高端的的东西其实简单。因为很多都是现成可用的。 好了 上代码二、配置、设置、实现 1.静态配置 & 动态 配置 1.1 静态配置 首先打开plist文件 1.2 在plist添加 UIA原创 2016-07-20 15:57:12 · 1304 阅读 · 0 评论 -
Swift---网络判断封装(可直接使用)
import Foundationclass YJNetWorkManager: NSObject { /** 判断网络类型 - returns:返回值字符串 wifi(kReachableViaWiFi) 移动网网络(kReachableViaWWAN) 无网络(kNotReachable) */ class func rechabilityWith2GA原创 2016-07-04 18:42:38 · 1255 阅读 · 0 评论 -
Objective-C Runtime的基本使用(iOS Runtime的初体验)
一、Runtime前言搞懂Runtime好像很难,需要一些底层基础,我看了好久,也才懂得一些些,这里做一个笔记,OC是运行时语言,只有在程序运行时,才会去确定对象的类型,并调用类的对象相应的方法。利用runtime机制让我们可以在程序运行时动态修改类,对象中的所有属性,方法,就算是私有方法以及私有属性都可以动态的修改。所以我所理解的就是 动态创建类,修改类,访问私有方法等一些基本特性,应该说理解ru原创 2016-06-03 14:10:50 · 4430 阅读 · 2 评论 -
iOS开发之CocoaPods使用说明
CocoaPods是一个用来帮助我们管理第三方依赖库的工具,自己用过,记录下使用过程 一、首先要安装CocoaPods CocoaPods是用Ruby实现的,要用使用它首先需要有Ruby的环境,但幸运的是OS X系统默认可以可以Ruby了,因此只需要以下命名,打开终端$sudo gem install cocoapods 完了之后输入$pod setup 安装 这个过程有时候会有点慢然后创原创 2016-01-14 19:23:33 · 524 阅读 · 0 评论 -
iOS开发NSTimer闪烁问题
iOS开发中,有一个验证码倒计时的场景,实现起来不困难,但做完之后会发现一个很奇怪的现象,每秒闪烁一下,让人很烦,如果不希望这个效果,很简单, 把UIButton的Type 设置成Custom 就可以了!验证码倒计时self.timer=[NSTimer scheduledTimerWithTimeInterval:1 target:self selector:@selector(CountTime原创 2016-01-05 19:23:22 · 901 阅读 · 0 评论 -
Touch ID指纹识别功能 iOS8
- (IBAction)loginAction:(id)sender { NSLog(@"登录触发方法"); // 步骤一 检查Touch ID是否可用 LAContext *myContext = [[LAContext alloc] init]; NSError *authError = nil; NSString *myLocalizedReasonStr原创 2015-12-20 13:56:17 · 677 阅读 · 0 评论 -
iOS新版本特性(引导页)
图片规则 和命名要求 4S 640 X 960 xxx@2x.png 如:new_feature_0@2x.png 5S 640 X 1136 xxx568h@2x.png 如:new_feature_0-568h@2x.png 6 750 X 1334 xxx667h@2x.png 如:new_feature_0-667h@2x.pn原创 2015-12-20 12:51:30 · 774 阅读 · 0 评论 -
去掉导航栏分割线 和 设置导航栏的背景颜色
// 去掉导航栏下面的 分割线 if ([self.navigationController.navigationBar respondsToSelector:@selector( setBackgroundImage:forBarMetrics:)]){ NSArray *list=self.navigationController.navigationBar.subvie原创 2015-12-20 12:42:46 · 4663 阅读 · 0 评论 -
设置Label的行间距
有时候只有一个Label比较要设置Label每行的间距 可以用下面方法- (void)labelSpacing:(NSString *)textString{ NSMutableAttributedString *attributedString = [[NSMutableAttributedString alloc] initWithString:textString]; NSM原创 2015-12-20 12:37:41 · 1256 阅读 · 0 评论 -
self.xxx 和 _xx 的区别
在项目开发中实际应用到的 在赋值和取值的时候 不懂self.xx 和 _xx的区别,使用起来貌似差不多!不过有这样的出来还是有差别 self.xx 调用了该类的setter和getter方法; _xx 直接获取自己的实例变量。@property (nonatomic,copy) NSString *userName; self.userName是对属性的访问, _userName是对局部变量的原创 2015-12-01 20:47:29 · 1055 阅读 · 0 评论 -
[__NSCFString containsString:]: unrecognized selector sent to instance 的解决方案
看到这个错的时候 一般就是iOS系统不兼容的原因 我现在基本没有考虑iOS7的兼容,但有时候又偏偏有iOS7的机子,很无奈又要做适配我最初写的代码是这样的: if ([self.UserNameTF.text containsString:@"*"]) { GFBLog(@"还有*号 不转换"); } else原创 2015-11-19 20:38:22 · 5226 阅读 · 1 评论 -
cocosPods 遇到的问题
这边就说一个我使用cocosPods遇到的问题,怎么使用cocosPods就不讲了,遇到这个错的时候 大家应该都会使用了。 问题: 有时候输入终端 输入 pos install 命令的时候 会出现一只等待都没有反应。 分析:一般过了5分钟 10分钟就不需要在等了,有可能命名被墙了。 解决:这个时候使用如下命名: pod install –verbose –no-repo-update 一原创 2015-11-17 20:28:09 · 448 阅读 · 0 评论 -
iOS调试技巧---编译器预定义宏
(1)FUNCTION ://获取当前方法名;(2)func ://获取当前方法名;(3)PRETTY_FUNCTION ://获取当前方法名;(4)LINE ://获取当前所在行;(5)FILE ://获取该文件的绝对路径;(6)DATE ://获取当前日期;(7)TIME ://获取当前时分秒;(8)TIMESTAMP ://获取当前时间戳;挺好用的原创 2016-01-14 19:26:08 · 375 阅读 · 0 评论 -
关于胖Model 和 瘦Model
近期才知道 还有Model 还有胖瘦之分,意外了解 看http://casatwy.com/ 博客了解到的··所以记录下来 说下概念 什么叫胖Model? 胖Model包含了 部分弱业务逻辑。胖Model要达到的目的是,Controller从胖Model这里拿到数据之后,不用额外做操作或者简单操作即可,就能直接赋值在View上例如 有时候我们请求后台请求的数据 时间 返回回来的的毫秒 5623原创 2016-01-14 19:39:08 · 1653 阅读 · 0 评论 -
iOS 通讯录排序
在很多时候需要处理分组信息 和 数据排序 按时间 字母 排序,类似通讯录 如下图做这个 我的思路是用字典··这里按字母ABCD排序 首先把中文转换成拼音, 截取第一个字母 然后插入字典 字母作为key 并根据key对应的value创建为数组,第二次取出字典中所有的key ,判断新的key是否在所有key中,在 找出对应的value插入到数组中, 不在重新创建。一般账单是按时间排序的,大同小异/原创 2016-03-17 21:01:03 · 3559 阅读 · 1 评论 -
iOS打包.a静态库步骤
打包静态库流程 1.创建静态库 2.实现类 3.公开.h文件 4.打包模拟器静态库 5.打包真机静态库 6.合并模拟器 和 真机 静态库 7.测试静态库一、前期工作 1、新建.a静态库工程 2、实现需要打包的类 3、添加Headers 4、然后找到Heaers(0 items)一栏,点+号 添加头文件 5、接着添加需要公开的头文件 6、添加完之后,头文原创 2016-06-08 14:29:15 · 5099 阅读 · 0 评论 -
iOS二维码、条形码生成(可指定大小、颜色)
一、前言: iOS7.0之后可以利用系统原生 API 生成二维码, iOS8.0之后可以生成条形码, 系统默认生成的颜色是黑色. 在这里, 利用以下方法可以生成指定大小、指定颜色的二维码和条形码, 还可以添加背景颜色、阴影效果, 以下是具体方法.二、二维码生成 因为返回的都是UIImage 所以我写了一个UIImage的分类// UIimage(QRCode).h 文件//Av原创 2016-06-07 14:17:33 · 3903 阅读 · 0 评论 -
iOS CGContextRef的使用
今天有空尝试了iOS画图,还蛮好玩的,我就画了几个。创建一个类 继承View//// CustomView.m// CollectionCuttingLine//// Created by GongHui_YJ on 16/5/30.// Copyright © 2016年 YangJian. All rights reserved.//#import "CustomView.h原创 2016-05-30 16:54:42 · 2269 阅读 · 0 评论