iOS Notes
iOS遇到以及学习的笔记和知识
搬砖程序员
学习是一种态度;分享是一种乐趣!
展开
-
UIImagePickerController 选择照片后返回的不是present视图而是第一个根视图
最近在写项目的时候,调取相机拍照和选择照片后,突然发现UIImagePickerController的实例调用dimiss之后不是返回的推出UIImagePickerController的视图控制器,而是返回到该navigationctroller控制的根类视图。解决方案: 设置 UIImagePickerController 的 modalPresentationStyle 属性...原创 2018-08-29 11:22:21 · 753 阅读 · 0 评论 -
判断控件图片或背景图片是否被更改
在对于图片上传操作时,我们需要先将图片展示给用户,然后点击按钮将图片上传。那么我们在点击上传按钮的时候,如果用户没有进行更改,我们就直接上传,要么是是空图片,要么是原始的默认图。而我们的目的是保证用户选择图片并上传,而不是上传默认图片。那么怎么区分图片是否已经选择好了呢? 对我而言,有两种方法: 1.申明全局变量保存图片 每当选择一张图片,就将图片赋值给全局的变量进行保存,但是如果需原创 2017-02-15 13:16:34 · 1223 阅读 · 0 评论 -
相机选择照片及拍照后使用AFNetworking图片上传(支持一张及多张上传)
弹出照片获取方式- (IBAction)changeTheImage:(UIButton *)sender { selectedButton = sender; UIActionSheet *sheet = [[UIActionSheet alloc] initWithTitle:nil delegate:self cancelButtonTitle:@"取消" destruc原创 2017-02-15 10:34:16 · 730 阅读 · 0 评论 -
IOS APP端京东支付集成
京东支付没有现成的SDK, 使用的是加载html。因此,在集成京东支付的时候,我们使用webView来进行加载显示支付的页面。 京东支付需要传递多个参数才能拉起支付页面,那么我们怎么样获得和传递参数呢?1.我们需要与自己的后台进行交互,通过网络请求,获取到拉起支付页面所需要的参数,并将参数解析成字符串进行保存。2.在选择京东支付方式之后, 跳原创 2016-05-07 02:23:57 · 5292 阅读 · 0 评论 -
史上最全的iOS面试题及答案
1.写一个NSString类的实现+ (id)initWithCString:(c*****t char*)nullTerminatedCStringencoding:(NSStringEncoding)encoding; + (id) stringWithCString: (c*****tchar*)nullTerminatedCString enc转载 2016-05-06 17:41:12 · 890 阅读 · 0 评论 -
iOS:关于获取网络类型和运营商信息
目录1. 获取运营商网络类型2. 获取运营商信息 返回目录1. 获取运营商网络类型Apple的Reachability Sample看起来不错,但是只可以判断是否连接到互联网和是否连接Wifi,但是无法判断运营商网络类型(2G/3G等)。我查到有3种方法实现,前两种是通过调用私有API,第三种是只有iOS 7才有的,公有API,但是没有文档。第一转载 2014-11-12 10:26:39 · 1170 阅读 · 0 评论 -
iOS: 视觉化CALayer的zPosition
众所周知CALayer的zPosition等效于在Z轴上做了个偏移Transform。所以我们可以通过3D Transform来视觉化各个CALayer的zPosition。如下代码,在一个CALayer中加入多个子Layer,然后分别设置他们的zPosition://=== ViewController中的viewDidLoad方法中 ===//主LayerCGRect fr转载 2014-11-12 10:19:16 · 3950 阅读 · 0 评论 -
iOS: CGPathAddArc和CGPathAddArcToPoint函数
注意:CGPathAddArc和CGContextAddArc,以及UIBezierPath类型的addArcWithCenter:radius:startAngle:endAngle:clockwise:方法原理都类似。而CGPathAddArcToPoint和CGContextAddArcToPoint函数则原理类似。只不过CGPath相关的函数多了一个CGAffineTransform参数,转载 2014-11-12 10:17:49 · 857 阅读 · 0 评论 -
iOS CALayer和3D (1): 定义一个简单的旋转3D立方体
先看结果:完成使用CALayer创建的一个旋转的3D立方体。 很简单,注意保持一个清晰的空间想象力,然后把每一个CALayer执行相应的3D变换,最后使用Core Animation是主Layer动起来,OK。让我们开始动手!首先,在ViewController中定义主Layer,这个CALayer用来存放其他子Layer,我们一共需要6个子Layer,每一转载 2014-11-12 10:14:28 · 1258 阅读 · 0 评论 -
iOS: 使用CGContextRef中的Transform来辅助作图
注意:本文讲述CGContextRef中相关Transform使用的API,其他类型的Transform会和此类似。对于CGPath,Path的添加函数中会有CGAfflineTransform参数。如下图:对于UIBezierPath类型,请使用applyTransform方法。使用Transform可以帮助我们画出一些有规律且复杂的图像,同时Tran转载 2014-11-12 10:04:38 · 912 阅读 · 0 评论 -
iOS: 对图片进行不规则剪裁
效果如下图: 首先,在工程Bundle中加入测试用的图片文件,比如“meteoralp.jpg”。 首先,我们需要把图片展示在界面上。很简单的操作,唯一需要注意的是由于CGContextDrawImage会使用Quartz内以左下角为(0,0)点的坐标系,所以需要使用CGContextTranslateCTM函数和CGContextScaleC转载 2014-11-12 09:59:20 · 5925 阅读 · 1 评论 -
iOS- CoreData 数据库管理
1.前文 上次用SQLite3实现了数据管理,这次准备用CoreData来实现。 Core Data 是iOS SDK 里的一个很强大的框架,允许程序员以面向对象的方式储存和管理数据。使用Core Data框架,程序员可以很轻松有效地通过面向对象的接口管理数据 相比SQLite3来说,用CoreData更有利于程序员来管理数转载 2014-08-08 10:36:08 · 822 阅读 · 0 评论 -
iOS关闭App带动画退出
iOS代码退出程序一般直接调用exit(0); ,但是视觉上看起来像闪退,借鉴下网上别人的代码,写了一个向下切出退出程序的方法,代码如下: ?123456789101112- (void)exitApplication {转载 2014-08-08 10:32:30 · 1491 阅读 · 0 评论 -
iOS: 使用CGContextRef中的Transform来辅助作图
注意:本文讲述CGContextRef中相关Transform使用的API,其他类型的Transform会和此类似。对于CGPath,Path的添加函数中会有CGAfflineTransform参数。如下图:对于UIBezierPath类型,请使用applyTransform方法。使用Transform可以帮助我们画出一些有规律且复杂的图像,同时Tran转载 2014-11-12 10:16:42 · 606 阅读 · 0 评论 -
iOS 面试中遇到的部分问题及简单答案(1)->(陆续更新)
1.简述block的实现结构一个block实例实际上由6部分构成:1.isa指针,所有对象都有该指针,用于实现对象相关的功能。2.flags,用于按bit位表示一些block的附加信息,本文后面介绍block copy的实现代码可以看到对该变量的使用。3.reserved,保留变量。4.invoke,函数指针,指向具体的block实现的函数调用地址。5.descriptor原创 2016-11-23 17:14:03 · 574 阅读 · 0 评论 -
UITextField 设置左右视图、文字距离及字符长度限制
UITextField 是iOS开发中的一个常用控件。并伴有左右视图的提示。 比如一个登陆界面, 需要我们输入用户名及密码, 这是多数app的常见模式了。 这样的界面, 左边, 可以是一个userName和password的文字或者图标提示, 右边则最常见的是获取验证码及让textField 安全输入或者可见输入。这种情况, 我们是去创建一堆控件进行提示和显示? 虽然这样可以获得相同的效果,原创 2016-06-08 10:29:35 · 5843 阅读 · 0 评论 -
在xib和storyBoard上设置layer属性的两种方法
xib和storyBoard在开发时给我们提供了很大的方便, 我们不但能在上面设置界面相关的属性,以及部分类的设置。在开发时,我们很多时候都是实用代码对控件的layer层进行设置和修改,如果子类控件多了,每个都需要设置是不是很麻烦呢? 那么, 我们能不能向对view一样在xib上或者storyBoard上直接就能对layer进行相关设置呢? 答案当然是肯定的。 我们有两种方法原创 2016-05-29 16:54:56 · 6314 阅读 · 0 评论 -
iOS 项目中出现的一些问题
1.不放4.7、5.5的启动页,导致的程序整体效果不佳做项目的过程中, 我们放入@2x、@3x的图片, 但不放入4.7寸与5.5寸屏幕尺寸的启动页时, 在4.7与5.5寸屏幕下展示,对app的整体显示效果都有很大的影响。 1).在不放入4.7与5.5启动页时, 运行程序, 虽然放入了@3x的图片, 但是程序使用资源只会显示@2x的效果, 则会造成图片的拉伸与显示模糊等。原创 2016-05-28 23:36:54 · 3502 阅读 · 0 评论 -
iOS 下实现侧滑返回效果
前言:ios7开始 苹果增加了页面 右滑返回的效果;具体的是以UINavigationController为容器的ViewController间右滑切换页面。代码里的设置是:self.navigationController.interactivePopGestureRecognizer.enabled = YES;(default is YES)可以看到苹果给navigation转载 2015-04-17 11:40:59 · 1996 阅读 · 0 评论 -
ios 开发中遇到的问题总结以及解决方法
判断设备是否安装了微信 BOOL isInstalled = [WXApi isWXAppInstalled]; if (!isInstalled) { UIAlertView *alert = [[UIAlertView alloc]initWithTitle:@"您未安装此软件,请安装!" message:nil delegate:原创 2014-10-16 14:49:48 · 1360 阅读 · 0 评论 -
ios 关于禁止屏幕旋转问题的解决
前段时间在做一个关于shi原创 2014-10-16 14:39:29 · 3072 阅读 · 0 评论 -
Device orientation vs interface orientation
Device orientation is of course the orientation that the device is currently being held in, while interface orientation is the orientation of the running app’s user interface.转载 2014-08-26 09:34:56 · 624 阅读 · 0 评论 -
IOS 字符串中去除特殊符号
IOS 字符串中去除特殊符号 stringByTrimmingCharactersInSet 应该用于账号登录等先上个例子:NSString * str1 =[nameInput.text stringByTrimmingCharactersInSet:[NSCharacterSetwhitespaceAndNewlineCharacterSet]];NSString转载 2014-08-11 13:25:43 · 4890 阅读 · 0 评论 -
iOS消息推送机制的实现
iOS消息推送的工作机制可以简单的用下图来概括: Provider是指某个iPhone软件的Push服务器,APNS是Apple Push Notification Service的缩写,是苹果的服务器。 上图可以分为三个阶段:第一阶段:应用程序把要发送的消息、目的iPhone的标识打包,发给APNS。 第二阶段:APNS在自身的已注册Push服务的iPho原创 2014-08-08 11:38:54 · 619 阅读 · 0 评论 -
IOS用openurl打开设置选项 ===== 有的可能已被苹果官方禁用
在代码中调用如下代码:NSURL*url=[NSURL URLWithString:@"prefs:root=NOTIFICATIONS_ID"];[[UIApplication sharedApplication] openURL:url];即可跳转到设置页面的对应项。About — prefs:root=General&path=AboutAccessi转载 2014-08-08 11:24:56 · 3582 阅读 · 0 评论 -
iOS- AVSpeechSynthesizer——iOS7语音合成器
语音合成器的技术是iOS7推出的,可以实现无网络语音功能,支持多种语言 1. 定义一个成员变量,记录语音合成器 AVSpeechSynthesizer #import 复制代码 1 @interfaceViewController () 2 3 { 4 5 // 合成器 6转载 2014-08-08 10:47:43 · 1167 阅读 · 0 评论 -
iOS 各种bug集锦 以及解决方案 ----(自用)-----》陆续添加
1.Command /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang分类: iOS开发2013-01-10 20:35 9403人阅读 评论(0) 收藏 举报commandiosiOSIOSProcessPCH++ "/Us原创 2014-07-22 13:23:38 · 3259 阅读 · 0 评论 -
常见比较实用的代码
12.判断邮箱格式是否正确的代码://利用正则表达式验证-(BOOL)isValidateEmail:(NSString *)email{NSString *emailRegex = @"[A-Z0-9a-z._%+-]+@[A-Za-z0-9.-]+\\.[A-Za-z]{2,4}";NSPredicate *emailTest =原创 2014-06-05 14:29:33 · 1064 阅读 · 0 评论 -
UIScrollView && UITableView相关属性汇总及常用方法
1, UIScrollView:tracking //当 touch 后还没有拖动的时候值是YES,否则NOzoomBouncing //当内容放大到最大或者最小的时候值是 YES,否则 NOzooming //当正在缩放的时候值是 YES,否则 NOdecelerating //当滚动后,手指放开但是还在继续滚动中。这个时候是 YES,其它时候是 NOdecelerationRate //设置手转载 2014-06-05 14:20:12 · 2156 阅读 · 0 评论 -
Phone应用提交流程
Phone应用提交流程时间:2012-04-01 作者:tech迷怎么把开发完成的iOS App发布提交到App Store视频教程[高清]最近这篇文章点击很多,昨天到墙外Youtube上辛苦找到了这个文章。视频中的美女详细演示了:创建Provisioning Profile、打包App、上传到iTunes Connect,很是详细。19分钟,一定要有耐心慢慢看转载 2014-06-05 11:12:05 · 622 阅读 · 0 评论 -
iOS设备是否越狱的判断代码
UITableViewController转载 2014-06-05 10:19:40 · 611 阅读 · 0 评论 -
XCode6 生成prefix.pch文件
XCode6里,新建工程默认是没有pch文件的,苹果取消pch文件这一点肯定有它的道理,刚开始很多人可能不适应,如果我们想使用pch文件,需要手动添加,添加步骤如下:(依旧直接上图)生成prefix.pch文件" />生成prefix.pch文件" />@ 取消的原因:<喎�"http://www.2cto.com/kf/ware/vc/" target="_blank"cla转载 2016-05-06 17:41:20 · 515 阅读 · 0 评论 -
Xcode 6制作动态及静态Framework
有没有写SDK或者要将一些常用的工具类做成Framework的经历? 你或许自己写脚本完成了这项工作,相信也有很多的人使用iOS-Universal-Framework ,随着Xcode 6的发布,相信小伙伴们已经都知道了,Xcode6支持做Framework了.同时iOS-Universal-Framework开发者也宣布不在继续维持此项目的开发,建议开发者使用Xcode6制作,目前网上转载 2016-05-06 17:41:18 · 326 阅读 · 0 评论 -
iOS KVC和KVO开发模式
KVC和KVO,KVC:即Key-Value-Coding而KVO:即Key-Value-Observer KVC是针对NSObject的子类,因为它的实现是由于其括展类NSObject(NSKeyValueCoding),实现了 -(void)setValue:(id)valueforKey:(NSString *)key; - (id)value转载 2016-05-06 17:41:23 · 320 阅读 · 0 评论 -
block 回调函数(程序块)
block是ios4.0之后出来的一门新技术,应用也非常广泛,只要我们撑握其使用的翘门,使用其来也是非常简单的,而且它能将传统程序简单化 程序中" ^"代表程序块也就是block,在我们接下来的程序中都会有^ block的声明一般都是 返回类型(^block名称)(参数,...,...) 如void(^firstBlock)(float转载 2016-05-06 17:41:25 · 365 阅读 · 0 评论 -
CALayer 类
什么是CALayer? CALayer(这里简单地称其为层)。 首先要说的是CALayers是屏幕上的一个具有可见内容的矩形区域,每个UIView都有一个根CALayer, 其所有的绘制(视觉效果)都是在这个layer上进行的。 UILabel* lable = [[UILabelalloc]initWithFrame:CGRectMake(0, 0, 100,转载 2016-05-06 17:41:28 · 445 阅读 · 0 评论 -
iOS 中KVC、KVO、NSNotificat…
1、KVC,即是指 NSKeyValueCoding,一个非正式的Protocol,提供一种机制来间接访问对象的属性。而不是通过调用Setter、Getter方法访问。KVO就是基于 KVC 实现的关键技术之一。Demo:@interfacemyPerson : NSObject { NSString*_name; int转载 2016-05-06 17:41:44 · 401 阅读 · 0 评论 -
IOS用openurl打开设置选项 ==…
在代码中调用如下代码:NSURL*url=[NSURLURLWithString:@"prefs:root=NOTIFICATIONS_ID"];[[UIApplication sharedApplication] openURL:url];即可跳转到设置页面的对应项。About — prefs:root=General&path=AboutAccessibility —转载 2016-05-06 17:41:15 · 1532 阅读 · 0 评论 -
iOS开发 解决UITapGest…
UITableView 拥有属于自己的点击事件,在将一个UITableView 的控件放在其它视图上, 并且其它视图需要添加手势进行操作的情况下,我们会发现我们点击UITableView的cell的时候, 并没有出发方法:-(void)tableView:(UITableView*)tableView didSelectRowAtIndexPath:(NSIndexPath*)ind原创 2016-05-06 17:41:41 · 558 阅读 · 0 评论 -
iOS开发 引用第三方库出现duplicat…
在iOS开发中, 难免会集成别人的三方类库, 当集成的三方类库过多时, 难免会出现某些库同时使用了同样的函数库,导致link的时候报错提示duplicate symbol。详情见图:引用第三方库出现duplicate symbol时的处理方法" TITLE="iOS开发 引用第三方库出现duplicate symbol时的处理方法" />这样的报错让我们觉得很麻烦, 这样的文件重复错原创 2016-05-06 17:41:39 · 558 阅读 · 0 评论