iOS
文章平均质量分 62
记录iOS开发工程中的点点滴滴
gorpelnChen
这个作者很懒,什么都没留下…
展开
-
时光本 - 笔记本·记事本·日记本
时光本 是一款专注效率与记录的笔记工具。可以帮助你整理各种信息,包括便签、清单、图片、纪念日、地址、链接、银行卡、名片等。[高效记录]提供便签、清单、图片、纪念日、地址、链接、银行卡、名片等多种类型[专注效率]提供笔记紧急程度、分类,帮助你更好的归纳整理,提高效率[安全可靠]为保证数据安全,所有数据均采用本地存储,把数据归还给用户下载地址:https://apps.apple.com/cn/app/id1495623965...原创 2020-08-06 09:56:39 · 863 阅读 · 0 评论 -
gorpeln的个人博客 - gorpeln
## [趁年轻,做自己想做的! --- gorpeln](https://gorpeln.cn)原创 2020-05-07 14:37:16 · 3257 阅读 · 20 评论 -
iOS 中使用token机制来验证用户的安全性
登录的业务逻辑{ http:是短连接. 服务器如何判断当前用户是否登录? // 1. 如果是即时通信类:长连接. // 如何保证服务器跟客户端保持长连接状态? // "心跳包" 用来检测用户是否在线!用来做长连接! http:短连接使用token 机制来验证用户安全性原创 2016-03-21 14:04:43 · 9786 阅读 · 2 评论 -
iPhone屏幕分辨率
设备列表ppi的计算方式具体理解:参考:原创 2016-04-26 16:57:37 · 4053 阅读 · 0 评论 -
mac 终端 svn 命令
1、将文件checkout到本地目录svn checkout path(path是服务器上的目录) 例如:svn checkout svn://192.168.1.1/pro/domain 简写:svn co2、往版本库中添加新的文件 svn add file 例如:svn add test.php(添加test.php) svn add *.php(添原创 2016-05-29 11:52:54 · 4058 阅读 · 0 评论 -
自定义友盟分享界面iOS
提要:使用代码实现友盟分享弹出的选择界面的自定义方法,不同的按钮实现相应的第三方分享。1、项目需求1.1.1:下面是我们项目的需求图:(如果用原生的是一行四个按钮)1.1.2:友盟注册,以及SDK下载和导入项目不在说,具体请参照 友盟分享具体操作。2、界面2.1.1:本人使用了九宫格布局,为了方便大家,我给大家提供一个链接地址:(暂时还未整理好,需要的联系我原创 2016-10-09 10:56:09 · 27038 阅读 · 10 评论 -
buid和version之间的区别
iOS的版本号,一个叫做Version,一个叫做Build,这两个值都可以在Xcode 中选中targets,点击“General”后看到。Version在plist文件中的key是“CFBundleShortVersionString”,和AppStore上的版本号保持一致,Build在plist中的key是“CFBundleVersion”,代表build的版本号,原创 2016-11-23 10:52:07 · 4209 阅读 · 1 评论 -
iOS应用跳转到app store
//第一种方法 直接跳转 [[UIApplication sharedApplication] openURL:[NSURL URLWithString:@"itms-apps://itunes.apple.com/app/id1018221712"]]; //第二中方法 应用内跳转 //1:导入StoreKit.framework,控制器里面添加框架#import //2原创 2017-02-13 16:10:27 · 2310 阅读 · 0 评论 -
视图始终在最上面
//视图始终在最上面 [[self superview] bringSubviewToFront:self];原创 2017-02-15 18:21:09 · 2376 阅读 · 0 评论 -
iOS开发编码规范建议
在开发过程中,我们不仅要去看别人的代码,也要让别人看我们的代码。那么,有一个良好的编码习惯将会非常重要。下面将会罗列使用Objective-C来开发iOS的编码建议。【1】任意函数长度不得超过50行。(其实很容易就超过50行,这就要考虑代码抽取了。)【2】任意行代码不能超过80字符。(其实也很容易超过80字符,可以考虑多行显示,比如有多个参数时,可以每个参数放一行。)可原创 2017-02-17 15:16:02 · 3079 阅读 · 0 评论 -
iOS检测耳机插入/拔出
#import - (BOOL)isHeadsetPluggedIn { AVAudioSessionRouteDescription* route = [[AVAudioSession sharedInstance] currentRoute]; for (AVAudioSessionPortDescription* desc in [route output原创 2017-02-23 16:45:26 · 2709 阅读 · 0 评论 -
iOS检测设备摄像头、指南针、录音、陀螺仪状态
- (void)viewDidLoad { [super viewDidLoad]; //检查前后摄像头 BOOL cameraAvailable = [UIImagePickerController isCameraDeviceAvailable:UIImagePickerControllerCameraDeviceRear];//前 BOOL fron原创 2017-02-23 17:00:45 · 2636 阅读 · 0 评论 -
iOS打开应用提示未受信任的企业级开发者
安装ipa包时,成功安装好应用之后发现不能打开应用,提示“未受信任的企业级开发者”。出现的问题:解决的方法:原创 2017-02-24 17:31:28 · 6191 阅读 · 0 评论 -
AppStore加急审核流程
一、首先打开这个网址https://developer.apple.com/contact/app-store/?topic=expedite 看到如下截图,这里我们选择request an expedited app review ,申请一个加急审核。二、完善一些数据如Contact Information,App In原创 2017-02-24 18:29:48 · 3134 阅读 · 0 评论 -
iOS-传值大全
前言iOS传值方式很多,这里面我主要讲几种常用的传值;以下传值正向传值A页面到B页面,反向传值B页面传到A页面。1.属性传值A页面:SecondViewController *svc = [[SecondViewController alloc]init]; UINavigationController *nvc = [[UINavigationController alloc]initWithRootViewController:svc]; svc.passValue = @"这是传的值原创 2017-03-24 10:44:48 · 2033 阅读 · 0 评论 -
解析HTTP协议六种请求方法:get,head,put,delete,post有什么区别
标准Http协议支持六种请求方法,即:1、GET2、POST3、PUT4、Delete5、HEAD6、Options 但其实我们大部分情况下只用到了GET和POST。如果想设计一个符合RESTful规范的web应用程序,则这六种方法都会用到。不过即使暂时不想涉及REST,了解这六种方法的本质仍然是很有作用的。大家将会发现,原来web也是很简洁明了的。下面依次说明这六种方法。 1,GET:GET可以说是最常见的了,它本质就是发送一个请求来取得服务器上的某一资源。资源通过原创 2017-03-27 12:47:54 · 4202 阅读 · 0 评论 -
App提交苹果审核被拒原因总结
原文:https://gorpeln.cn/article/149689776901、应用内包含检查更新功能iOS 应用的版本更新必须通过 App Store 进行,自身 App 内不能包含提示更新功能。从2015年3月起,所有包含检查更新功能的 App 都会被拒绝上架。2、使用第三方登录时未做安装检测接入第三方登录要检测是否安装了第三方客户端,未安装时不要显示对应按...原创 2017-06-08 15:16:10 · 9684 阅读 · 1 评论 -
字符串的删除替换
字符串的常用处理,删除,替换。记录一下,方便查找。- (void)viewDidLoad { [super viewDidLoad]; NSString *str1 = @""; //删除字符串两端的尖括号 NSMutableString *mString = [NSMutableString stringWithString:str1]; /原创 2017-02-04 18:01:27 · 2212 阅读 · 0 评论 -
iOS 图片压缩UIImage方法扩展
1、图片压缩 用法:UIImage *yourImage= [self imageWithImageSimple:image scaledToSize:CGSizeMake(210.0, 210.0)]; //压缩图片 - (UIImage*)imageWithImageSimple:(UIImage*)image scaledToSize:(CGSi转载 2016-03-09 20:38:31 · 16633 阅读 · 0 评论 -
更改AlertView背景
更改AlertView背景 UIAlertView *theAlert = [[[UIAlertViewalloc] initWithTitle:@"Atention" message: @"I'm a Chinese!"原创 2016-03-09 20:46:15 · 4038 阅读 · 0 评论 -
点击tabbar刷新页面
.h文件#import @interface TabbarRootViewController : UITabBarController@end.m文件#import "TabbarRootViewController.h"#import "NoticeTableViewController.h"@implementation TabbarRootViewControll原创 2016-05-29 18:24:41 · 5035 阅读 · 0 评论 -
状态栏(UIStatusBar)的设置
http://my.oschina.net/shede333/blog/304560IOS上 关于状态栏的相关设置(UIStatusBar)知识普及ios上状态栏 就是指的最上面的20像素高的部分状态栏分前后两部分,要分清这两个概念,后面会用到:前景部分:就是指的显示电池、时间等部分;背景部分:就是显示黑色或者图片的背景部分;如下图:前景部分为白色,原创 2016-08-12 15:58:16 · 4671 阅读 · 3 评论 -
设置控件圆角,只设置上面两个角的圆角
设置控件圆角,只设置上面两个角的圆角,下面两个角依然是直角,如图效果:代码(通过贝塞尔曲线重绘layer层): UIImageView *picImageView = [[UIImageView alloc] initWithFrame:CGRectMake(100, 100, 100, 100)]; picImageView.backgroundColo原创 2016-10-27 19:00:28 · 7735 阅读 · 4 评论 -
iOS获取控制器里面的控件
for (int i=0; i<3; i++) { UILabel *testLabel = [[UILabel alloc]initWithFrame:CGRectMake(((self.view.frame.size.width - 20)/3 + 10) * i, 100, (self.view.frame.size.width - 20)/3, (self.view.frame.原创 2017-02-15 14:16:12 · 2275 阅读 · 0 评论 -
限制UITextField 输入文字的长度
监听textField文本变化的事件1、实现UITextFieldDelegate协议;2、实现textField:shouldChangeCharactersInRange:replacementString:方法;-(BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRa原创 2017-02-16 10:09:40 · 3294 阅读 · 0 评论 -
iOS用CGContextRef画各种图形(文字、圆、直线、弧线、矩形、扇形、椭圆、三角形、圆角矩形、贝塞尔曲线、图片)
首先了解一下CGContextRef:An opaque type that represents a Quartz 2D drawing environment.Graphics Context是图形上下文,可以将其理解为一块画布,我们可以在上面进行绘画操作,绘制完成后,将画布放到我们的view中显示即可,view看作是一个画框.自己学习时实现的demo,希望对大转载 2017-02-17 11:56:43 · 2391 阅读 · 0 评论 -
label添加下划线
UILabel *myLabel = [[UILabel alloc] initWithFrame:CGRectMake(0, 0, self.view.frame.size.width, 100)]; myLabel.textAlignment = NSTextAlignmentCenter; myLabel.center = self.view.center; NSMu原创 2017-02-17 17:06:14 · 6138 阅读 · 0 评论 -
iOS界面淡进淡出的效果
- (void) showView{ CGContextRef context = UIGraphicsGetCurrentContext(); [UIView beginAnimations:nil context:context]; [UIView setAnimationCurve:UIViewAnimationCurveEaseInOut];原创 2017-02-17 18:07:54 · 3634 阅读 · 0 评论 -
Label中某几个字符颜色大小不同
UILabel *label=[[UILabel alloc]initWithFrame:CGRectMake(100, 10, 200, 100)]; int i=arc4random()%100; NSString *str1=@"本期参与:"; NSString *str2=[NSString stringWithFormat:@"%d",i]; NSStri原创 2017-02-20 14:34:46 · 2381 阅读 · 0 评论 -
iOS点击button放大后缩小效果
-(void)buttonClick{ button.transform = CGAffineTransformIdentity; [UIView animateKeyframesWithDuration:0.5 delay:0 options:0 animations: ^{ [UIView addKeyframeWithRelativeStartTime:0 r原创 2017-02-24 18:38:04 · 5242 阅读 · 0 评论 -
UIAlertController的用法
1.我为什么要写这篇博客记录它?答:因为 UIAlertView和UIActionSheet 被划线了 苹果不推荐我们使用这两个类了,也不再进行维护和更新,为了方便以后使用我来记录一下。如图所示正如苹果所说它现在让我们用UIAlertConntroller(其实iOS 8.0就可以使用这个类了) 并设置样式为UIAlertcontrollerStyleAlert 就是原来的UIAlertView了,同理UIAlertcontrollerStyleActionSheet就是UIActionSheet。2原创 2017-03-19 12:33:46 · 2019 阅读 · 0 评论 -
iOS数据持久化存储
总述:所谓数据持久化是指,将数据存储下来,使得应用程序下次打开或者机器重启后可以继续访问之前保存的数据。iOS开发中有多种持久化方案,如:plist文件(属性列表)NSKeyedArchiver(对象归档)preference(偏好设置)sqlite3coredata 沙盒机制:ios不同应用有独立的文件目录,不能互相访问。这个独立的文件目录就称为”沙盒”. 1、目录结构,原创 2016-03-08 18:27:29 · 16912 阅读 · 1 评论 -
iOS 如何选择delegate、notification、KVO
前面分别讲了delegate、notification和KVO的实现原理,以及实际使用步骤,我们心中不禁有个疑问,他们的功能比较类似,那么在实际的编程中,如何选择这些方式呢? 在开发ios应用的时候,我们会经常遇到一个常见的问题:在不过分耦合的前提下,controllers间怎么进行通信。在IOS应用不断的出现三种模式来实现这种通信: 1.委托deleg转载 2016-03-09 19:32:57 · 16321 阅读 · 1 评论 -
MRC到ARC的自动转换
回 到正题,我们讨论的是ARC,关于REST API和XML解析的技术细节就暂时先忽略吧..整个程序都是用MRC来进行内存管理的,首先来让我们把这个demo转成ARC吧。基本上转换为ARC意 味着把所有的retain,release和autorelease关键字去掉,在之前我们明确几件事情:* Xcode提供了一个ARC自动转换工具,可以帮助你将源码转为ARC* 当然你也可以自己动手完成A转载 2016-03-09 19:57:34 · 16597 阅读 · 0 评论 -
正则表达式
判断邮箱格式是否正确的代码: //利用正则表达式验证 -(BOOL)isValidateEmail:(NSString *)email { NSString *emailRegex = @"[A-Z0-9a-z._%+-]+@[A-Za-z0-9.-]+\\.[A-Za-z]{2,4}"; NSPredicate *emailTest = [NSPre原创 2016-03-09 20:30:43 · 4149 阅读 · 1 评论 -
iOS多线程开发
概览大家都知道,在开发过程中应该尽可能减少用户等待时间,让程序尽可能快的完成运算。可是无论是哪种语言开发的程序最终往往转换成汇编语言进而解释成机器码来执行。但是机器码是按顺序执行的,一个复杂的多步操作只能一步步按顺序逐个执行。改变这种状况可以从两个角度出发:对于单核处理器,可以将多个步骤放到不同的线程,这样一来用户完成UI操作后其他后续任务在其他线程中,当CPU空闲时会继续执行,而此时对于转载 2016-03-16 19:53:15 · 17122 阅读 · 0 评论 -
NSNotification(通知)
//创建一个消息对象NSNotification * notice = [NSNotification notificationWithName:@"notification" object:nil userInfo:@{@"key":@"value"}];//发送消息[[NSNotificationCenter defaultCenter]postNotification:notic原创 2016-04-13 10:16:38 · 3788 阅读 · 0 评论 -
iOS 排序算法总结—冒泡排序
一、算法描述冒泡排序:依次比较相邻的数据,将小数据放在前,大数据放在后;即第一趟先比较第1个和第2个数,大数在后,小数在前,再比较第2个数与第3个数,大数在后,小数在前,以此类推则将最大的数"滚动"到最后一个位置;第二趟则将次大的数滚动到倒数第二个位置......第n-1(n为无序数据的个数)趟即能完成排序。以下面5个无序的数据为例:40 8 15 18 12 (文中仅细化了第一趟的比原创 2016-07-27 22:06:04 · 5109 阅读 · 0 评论 -
push,pop到任意控制器
主题思想:如A、B、C、D 四个视图控制器想要在 A push B 后, B 在push 到 D ,然后从 D pop 到 C ,再从 C pop 的A解决方法如下:1.假如此时在 A 控制器下,想要到 push 到 B, 可以这样写[self.navigationController pushViewController: B :YES];这时 self.navigationController...原创 2016-10-28 14:36:56 · 20892 阅读 · 5 评论 -
const,static,extern 的理解
static修饰局部变量让局部变量只初始化一次局部变量在程序中只有一份内存并不会改变局部变量的作用域,仅仅是改变了局部变量的生命周期(只到程序结束,这个局部变量才会销毁)修饰全局变量全局变量的作用域仅限于当前文件const没有const修饰的指针指针p和*p都能被修改// 定义一个指针变量int *p = NULL;//原创 2016-11-13 16:27:36 · 24251 阅读 · 4 评论