
ios-开发
文章平均质量分 76
rv0p111
之前由于一些原因博客没有更新,现在还是正常更新,继续分享..
展开
-
ios—显示全屏动画+显示联网标志
有一些app其实在启动动画的时候是可以进行全屏播放启动动画的,状态栏是隐藏的,什么是状态栏就是标有运营商 时间的最上面的那个状态栏,这个时候我们应该怎么做呢?其实只需要在info.plist中设置status bar initiatlly hidden 为YES则启动动画可全屏,如果在AppDelegate.m中附上[[UIApplication sharedApplication] setS原创 2017-07-10 15:27:57 · 555 阅读 · 0 评论 -
ios-自定义UITextFiled的属性设置
可以自定义一个UITextFiled文本框,设置这些文本框的属性,具体看代码的注释。.h文件#import @interface OneSearBar : UITextField@end.m文件中#import "OneSearBar.h"#import "UIImage+Extend.h"@implementation OneSearBar- (id)initWit原创 2017-07-10 16:38:08 · 739 阅读 · 0 评论 -
ios-无限轮播器
我们怎么样能做到利用UIPageControl和UIScrollView来实现能够自动的图片翻页和人为拖拽也能翻页,而且结束最后一张翻页之后直接跳到第一张,而不是从最后一张很快的往前翻翻到第一页,其实我们只需要在scrollView中添加三个ImageView其实就可以了,默认显示的都是中间的ImageView,其中第一个ImageView显示的是中间图片的前一张图片,而第三个就是中间图片的后一张原创 2017-07-11 09:01:55 · 257 阅读 · 0 评论 -
ios中导航栏的设置
[self.navigationItem.leftBarButtonItem setTitleTextAttributes:[NSDictionary dictionaryWithObjectsAndKeys:[UIFont boldSystemFontOfSize:15],NSFontAttributeName, nil] forState:UIControlStateNormal];//设原创 2017-07-11 09:10:50 · 564 阅读 · 0 评论 -
ios-在键盘上面创建一个键盘上面的工具栏
此处介绍如果为键盘上面添加一个工具栏,可以在此工具栏中添加按钮实现收键盘的操作。在此工具栏上线添加两个占位按钮(无效),然后再添加一个实用按钮,可以让实用按钮处在最右边,此处textView为UITextView * textView; UIToolbar * topView = [[UIToolbar alloc]initWithFrame:CGRectMake(0, 0, 320, 30)];原创 2017-07-11 09:11:22 · 2563 阅读 · 0 评论 -
ios-instancetype和id的区别
@interface NSObject + (id)alloc; - (id)init; @end @interface NSArray : NSObject @end当我们使用如下方式初始化NSArray时:NSArray *array = [[NSArray alloc] init];按照Cocoa的命名规则,语句[NSArray alloc] 的类型就是NSArra转载 2017-07-11 10:11:03 · 785 阅读 · 0 评论 -
ios-set和get方法
在OC的类中,我们如果在interface{}中定义了成员变量,如果我们想要在类外给他们赋值和获取他们的值,我们就需要给他们写set方法和get方法,否则会报错。如果成员变量名是age,对于set方法的格式要求是setAge,意思就是说set方法要以set开头后面的字符为变量的大写字母开头,get方法就是一般就是以变量名来命名。比如说#import @interface RectMno : N转载 2017-07-12 09:28:23 · 1500 阅读 · 0 评论 -
ios-属性特性
属性的特性:为属性提供了一些关键字用以控制setter、getter的实现细节,这些关键字称为属性的特性(attribute); 2、读写性 1)readonly:只读状态,是告诉编译器,属性只生成getter方法,不生成setter方法; 2)readwrite:读写状态,是告诉编译器,属性既生成setter方法又生成getter方法,既有转载 2017-07-12 09:31:27 · 317 阅读 · 0 评论 -
ios-关于懒加载
接触ios开发也有段时间了,这里想总结一下自己对懒加载的理解,可能也不太全面,就简单点,其实就是数据就加载一次,可以不用在viewDidload里面就行加载,因为在viewDidload中加载可能会数据加载多次,而且有的时候你没有用到数据,它也已经给你加载出来了,这样会比较耗费内存和时间。懒加载的有点其实就是让控件和对象在最需要加载的时候加载。这样可以节省内存空间,毕竟我们能让手机速度越快越号是吧原创 2017-07-12 10:56:20 · 337 阅读 · 0 评论 -
ios-NSPredicate
关于这个我也是昨天刚刚接触,所以今天想记录下它的用法,不过我目前只会最简单的,不过还是想记录下,Predicate 就是谓词逻辑。和数据库的SQL语句具有相似性,都是从数据堆中根据条件进行筛选。NSPredicate中主要的几种运算方式1.比较运算符 > 、= 、例:@"number >= 99"2.逻辑运算符:AND、OR、NOT 这几个运算符计算并、或、非的结果。转载 2017-07-12 12:37:07 · 382 阅读 · 0 评论 -
ios-正则表达式使用的三种方法和正则表达式
正则表通常被用来检索、替换那些符合某个模式(规则)的文本,是对字符串的一种逻辑操作,可以用简单的方式达到字符串的复杂控制。一、利用NSPredicate就是谓词来进行匹配,比如可以匹配一个邮箱是不是有效的NSString *email = @“chenzhi_lin@163.com”;NSString *regex = @"[A-Z0-9a-z._%+-]+@[A-Za-z0-9.-]+\\.[...转载 2017-07-13 07:38:44 · 1046 阅读 · 0 评论 -
ios-NSString和NSMutableString函数
关于NSString中常用到的函数的记录NSString *str=@" 12 3 ";str=[str stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceCharacterSet]];//删除前后两端的空格NSLog(@"%@",str);//输出12 3[str substringFromIndex:2]//原创 2017-07-13 14:17:24 · 337 阅读 · 0 评论 -
ios-关于@property和@synthesize
简单先介绍下,@property用在 .h 头文件中用作声明,@synthesize用在.m 文件中用于实现。我们都知道可以在@interface(){}中定义变量,但我们想赋予它们值或者去获取它们的值,那我们就要给它们写一个get方法和set方法,但是如果我们变量定义了有30个我们就要写60个方法是不是有点太累了。。所以这时我们就可以采用@property,也就是说在编译器遇到了@propert...原创 2017-07-13 22:42:19 · 408 阅读 · 0 评论 -
ios-Category
Category其实就是对一个类做一次扩展,一个类可以有很多扩展,在Category中我们是给这个类可以增加一个方法。常见的形式就是文件名为Car+extend.h类似于这样的,还有就是为什么我们在做扩展的时候要在Car+extend.h中要加一个#import "Car.h"这样的一个头文件呢?为什么不可以加一个@class?,那是因为,我们是给这个类扩展的是方法,而不是说我们仅仅用到这个类的声转载 2017-07-14 09:05:06 · 451 阅读 · 0 评论 -
ios开发—变量属性
其实关于这个我一开也没怎么搞清楚,但经过收集了写资料,发现其实就是在我们.h方法中,我们可以定义这个类的变量和属性,而在.m文件中是只可以定义变量,而且在.h文件中的property属性在.m文件中,我们应该这么使用,self.propertyvariable,其中propertyvariable就是这个属性,然后如果我们想不加self而直接使用这个属性的话要在前面加一个下划线,比如说_prope原创 2017-06-27 17:51:13 · 278 阅读 · 0 评论 -
ios-单例模式
单例其实和C语言中的全局变量是差不多的。在整个程序的生命周期中只有一份内存,可以在多个程序中数据共享。最常见的单例写法其实就是static Manger *manger=nil;+(Manger *)shardeManger{ if(manger==nil) { manger=[[[self class]alloc]init]; } return原创 2017-07-15 10:06:59 · 395 阅读 · 0 评论 -
ios-关于深拷贝和浅拷贝和属性中的copy和strong的区别
深拷贝就是把内容拷贝一份产生一份新的对象,新对象计数器为1,源对象计数器不变。而浅拷贝是指针拷贝,把地址给你,你和我指向同一个对象,源对象计数器加一,源对象和副本的计数器相同。我们知道在OC中的拷贝函数有copy和mutablecopy,只要你调用了copy不管是NSString, NSDictionary还是NSArray还是NSMutableString还是NSMutableDictionar...原创 2017-07-14 21:06:29 · 2885 阅读 · 1 评论 -
ios-@class和#import
在项目开发中,如果我们在一个.h文件中只需要声明有另外一个类的变量的话,那么我们其实只需要@class 类名;就可以了,没有必要导入一个#import 类名.h这个头文件,因为这样会影响性能,我们只是在那个.h文件中知道有这个类就可以了,也不需要知道它的一些方法,如果在.m文件中我们需要用到它的方法再导入#import 类名.h这个头文件就可以了,因为导入一个头文件其实就相当于把这个.h文件中的内原创 2017-07-14 10:01:39 · 291 阅读 · 0 评论 -
ios-反射
我们可以通过一个字符串表示的类名来返回一个类名。类的反射 NSString *str=@"RectMno";//此处的RectMno是类名 Class class =NSClassFromString(str); RectMno *rect=[[class alloc]init];//class代表的就是类名 NSLog(@"%@",原创 2017-07-16 11:06:37 · 283 阅读 · 0 评论 -
ios-设置UISearchBar输入框的颜色等属性
我们其实都知道UISearchBar是UITextFiled和UISegmentedControl的组合和扩展,我们如果需要修改我们搜索栏里面的文本框的颜色,我们应该怎么修改呢,我们要修改搜索栏的placeholder的颜色又应该怎么修改呢?还有有一些普遍的属性具体看代码。 searchBar=[[UISearchBar alloc]initWithFrame:CGRectMake(0, 0,原创 2017-07-10 15:46:10 · 4092 阅读 · 0 评论 -
ios-description方法
其实在这里我补充下alloc是静态方法是类方法,而init是动态方法也就是对象的方法,比如说[Student alloc[init],因为我们init是通过类名 alloc了,相当于已经创建了一个对象由对象来调用init方法了。我们如果想用%@来打印对象时,就会调用description方法,我们可以重写父类的description方法。-(NSString *)description{原创 2017-07-15 13:38:35 · 476 阅读 · 0 评论 -
ios-Segue
ios中Segue分为自动型和手动型,自动型就是在storyboard中按住control键直接从控件拉到目标控制器,这条线就是Segue。自动型一般是在你点击了某个控件之后,不需要进行任何判断了,一定要跳转到下一个界面,最好就用自动型的Segue.手动型就是按住control键从来源控制器拖线到目标控制器,手动型的Segue需要设置一个标识符,在需要的时候,使用perform方法来执行对应的Se...原创 2017-07-29 10:26:03 · 468 阅读 · 0 评论 -
ios-结构体和类的区别
1、结构体只能封装属性,类却不仅可以封装属性也可以封装方法。如果一个封装的数据有属性也有行为,就只能用类了。2、结构体变量分配在栈,而OC对象分配在堆,栈的空间相对于堆来说是比较小的,但是存储在栈中的数据访问效率相对于堆而言是比较高3、堆的存储空间比较大,存储在堆中的数据相对于栈而言是比较低的4、如果定义一个结构体,这个结构体中有很多属性,那么这个时候结构体变量在栈中会占据很多空间,这转载 2017-07-23 14:36:22 · 1593 阅读 · 0 评论 -
ios-运用第三方字体
字体我们在ios开发中可以使用字体资源文件后缀为.otf或者为.ttf的文件导入到项目中进行使用,当然我们还可以要在info.plist文件中进行配置,添加“Fonts provided by application”配置项如下图所示。然后我们需要在Item0处后面填入你导入的第三方字体库的名称。这样我们就可以使用第三方字体了。可以在代码中使用也可以在storyboard中使用改变字体的型原创 2017-07-17 14:27:06 · 621 阅读 · 0 评论 -
ios-清空子控件
我们在清空子控件的时候可能我们一般都会这么做while(self.answerView.subviews.firstObject) { [self.answerView.subviews.firstObject removeFromSuperview]; }但其实我们只需要调用一个方法就可以帮我们节省自己写循环的代码[self.answerView.subvi原创 2017-07-20 17:56:45 · 523 阅读 · 0 评论 -
ios-图片概述
因为iphone有很多型号,屏幕的尺寸和分辨率都不同,为了在手机上都能正常的显示,所以同一张的图片肯定要做不同的版本。也有可能是同一张图片可能在不同的地方出现,所以也需要多张图片,就拿AppIcon来说,你在AppStore中下的应用图片和你一届下载过来放在桌面的图片肯定也是不同的。你在SpotLight搜索到的应用的图片也不一样。其实就是说同一个应用可能在不同的地方显示它的图标。在不同的原创 2017-07-20 20:06:05 · 369 阅读 · 0 评论 -
ios-偏好设置浅析
NSUserDefaults主要就是用来做偏好存储的一个类,这个和字典差不多,是用来快速存储键值对的NSUserDefaults就只有一个单例对象.下面就是获取一个单例对象的方法 NSUserDefaults * defaults=[NSUserDefaults standardUserDefaults];[defaults setObject:@"hhh" forKey:@"value"];原创 2017-07-29 20:39:38 · 501 阅读 · 0 评论 -
ios-归档解档
如果你想让保存一个自定义的对象,你就要让这个自定义的对象去遵守这个协议,而且我们要在.m文件中重写-(void)encodeWithCoder:(NSCoder *)aCoder{}方法来告诉归档需要保存哪些属性,这个NSCoder类型的对象和字典很相似。我们在自定义类的.m文件中要实现这个方法。就比如我在Person.h头文件中定义了两个属性,一个是年龄,一个是名字,我想要把这两个属性保存起来,原创 2017-07-30 08:04:44 · 718 阅读 · 0 评论 -
ios-关于protocol和delegate
下面是本人关于这个的一点理解具体看代码好了,有解析。protocol其实就是一个协议的意思//RectMno.h文件中#import @class RectMno;//此处声明则在下面代理方法中可以使用RectMno的参数@protocol ButtonDelegate //此处代表实现了NSObject这个协议-(void)Click:(RectMno *)button;//默认都是r原创 2017-07-14 11:41:30 · 480 阅读 · 0 评论 -
ios-UI控件的引用和代理用weak
我们知道一般我们采用拖线的方式,生成的属性一般都是@property (weak, nonatomic) IBOutlet UIImageView *Imageicon; 用的是weak其实用strong也没有问题因为没有必要,画个图解释一下吧,因为如果我们在控制器中通过生成可UIButton这个控件,把这个控件加入到self.view中已经形成了强引用了,控制器根本没有必要再对它进行强引用,原创 2017-07-24 08:38:57 · 509 阅读 · 0 评论 -
ios-回收键盘的方法
1、就是注销第一响应者,什么是第一响应者就是谁把键盘叫出来的谁就是第一响应者。所以我们要这么做,比如说self.text是一个文本框控件[self.text resignFirstResponder];2、就是让text所属的父视图停止编辑,比如说如果是把text加入到self.view中,这个时候我们让控制器控制的那个view结束编辑的话,只要是该视图的子控件就都会停止编辑了[self.原创 2017-07-18 11:59:24 · 419 阅读 · 0 评论 -
ios-NSTimer定时器
在这里介绍下定时器NSTimer的常用方法的使用NSTimer主要用来做时间间隔比较大的要执行的代码,比如说1s啊,几秒啊这样的。启动定时器的两种方法可以调用timeWithXXX来创建timer,要把这个timer对象手动的加到消息循环中才能启动,还有就是直接调用scheduledTimerWitnXXX创建的timer,创建完毕就会自动调用。NSTimer的第一种方式NSTimer *原创 2017-07-21 16:17:41 · 308 阅读 · 0 评论 -
ios-AppDelegate中设置根视图控制器
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions { self.window = [[UIWindow alloc] initWithFrame:[UIScreen mainScreen].bounds];//UIScre原创 2017-07-19 09:29:18 · 6251 阅读 · 0 评论 -
ios-CGRectGet的使用
记录一下关于CGRectGet的使用 CGRectGetHeight返回控件本身的高度 CGRectGetMinY返回控件顶部的坐标 CGRectGetMaxY 返回控件底部的坐标 CGRectGetMinX 返回控件左边缘的坐标 CGRectGetMaxX 返回控件右边缘的坐标 CGRectGetMidX表示原创 2017-07-19 10:51:03 · 446 阅读 · 0 评论 -
ios-MRC下的@property的参数
1、与多线程相关的atomic、nonatomic,atomic是默认参数2、与生成的setter方法的实现相关的参数assign是默认参数、retain3、与生成只读/读写相关的参数readonly、readwrite是默认参数4、与生成的getter、setter方法名字相关的参数automic:如果写了这个参数,那么生成的setter方法的代码就会被加上一把线程安全锁,安全,原创 2017-07-22 16:58:04 · 650 阅读 · 0 评论 -
ios-野指针和僵尸对象
野指针:指针指向的对象已经被释放,这个指针就称为野指针僵尸对象:1个已经被释放的对象,叫做僵尸对象,如果我们通过野指针去访问僵尸对象可能会出现问题对象回收的本质:是对象占用的空间系统可以分配给别的对象,在没有分配给别的程序之前,这个对象还是在的,数据也是在的,但是这个空间有可能会随时的被分配。在没有分配给别的对象之前是可以访问的,一旦分配给别人就不能访问了。僵尸对象我们在实际应用中不应转载 2017-07-22 17:40:04 · 1016 阅读 · 0 评论 -
ios-ARC、MRC、自动释放池
在网上看了几篇文章也想记录记录方便以后的查看吧。以下记录来自于网络。@autoreleasepool是自动释放池,让我们更自由的管理内存当我们手动创建了一个@autoreleasepool,里面创建了很多临时变量,当@autoreleasepool结束时,里面的内存就会回收ARC时代,系统自动管理自己的autoreleasepool,runloop就是iOS中的消息循环机制,当一个转载 2017-07-13 09:16:32 · 1781 阅读 · 0 评论 -
ios-字典转模型
什么是字典转模型,在plist文件中字典本身就可以存储数据,那我们模型其实也是用来存储数据的,那么什么是模型,就比如说我们可以创建一个类,给这些类添加属性,这些属性应该和字典中的键一一对应,然后创建一个对象,把字典中的键对应的值传给它,然后用来存储数据。其实就是本来用字典来保存的数据来用类的对象来保存.这样做的好处是什么,就是如果你在数据的时候字典中的键写错了,编译器不会报错,而模型对象一旦你写错原创 2017-07-19 11:52:26 · 332 阅读 · 0 评论 -
ios-xib和storyboard
Xib和storyboard都是一个可视化编程工具,都是苹果公司为了提高我们的开发效率来给我们提供的。xib是轻量级的来描述的软件界面,而storyboard是重量级的,为什么这么说因为xib就是用来描述界面的一小块的内容的,而不能描述多个界面,就是用来描述局部的UI控件,如果要描述多个界面以及界面与界面之间的关系那么我们就用storyboard。无论是xib还是storyboard最后都会生成代原创 2017-07-19 16:17:00 · 565 阅读 · 0 评论 -
ios-xib的加载过程
1、根据路径,来找到对应的xib文件2、加载xib文件,创建xib文件中的每一个控件3、对于每一个控件,创建的时候都会去看对应的custom class属性中写的是哪一个类,就去创建那个类的对象4、创建好某一个控件以后,会按照xib配置的属性的值,依次的给对象的属性进行复制5、创建当前控件下的每一个子控件,并且设置属性值,然后把该控件加载到对应的子控件中6、最后会返回一个数组,原创 2017-07-19 16:48:46 · 511 阅读 · 0 评论