iOS开发学习
布莱克猫
学习之路,永不止步
展开
-
自定义UIButton一般方法
自定义UIButton的话需要重写三个方法:-(CGRect)titleRectForContentRect:(CGRect)contentRect;设置按钮标题的frame-(CGRect)imageRectForContentRect:(CGRect)contentRect;设置图片标题的frame-(instancetype)initWithFrame:(CGRect)f原创 2016-03-18 09:35:09 · 274 阅读 · 0 评论 -
iOS 屏幕适配
一、屏幕适配发展历史1、直接通过frame设置2、通过Autoresizing设置控件和父控件的相对关系。运行时根据设置的规则计算出frame3、autolayout:设置某个控件与任意其他控件的相对关系4、size class: 针对不同的屏幕设置不同的控件位置越苏规则。ps:1:autoresizing和autolayout互斥。 2:使原创 2016-07-17 23:33:06 · 395 阅读 · 0 评论 -
自定义一个UITableViewHeaderFooterView、UITableViewCell需要注意的一些方法。
(id)initWithXXX:初始化这个View,UITableViewHeaderFooterView的时候并没有在其中设置frame和bounds;PS:注意重写我们通常在其中添加需要的UIVIew。需要在layoutSubViews中设置。(void)setModel:设置数据模型,在设置数据模型的时候同事设置UI子控件的frame。(void)layoutSubVie原创 2016-05-21 13:52:11 · 1744 阅读 · 0 评论 -
xib文件使用
xib布局文件在安装到手机后会被转成nib文件。因此记住nib就是xib。获取一个xib文件//使用NSBundle的loadNibName方法获取,传入要获取的xib的文件名(不用后缀)。NSBundle *bundle = [NSBundlemainBundle]; NSArray *objs = [bundleloadNibNamed:@"xib文件名"o原创 2016-04-24 17:59:18 · 373 阅读 · 0 评论 -
Xcode 插件管理器Alcatraz的安装和使用
Alcatraz是Xcode的一个插件管理器,通过Alcatraz可以查看和卸载Xcode上已安装的插件,并且通过Alcatraz也可以搜索并按安装许多Xcode的插件。 安装Alcatraz使用命令行安装:curl -fsSLhttps://raw.github.com/supermarin/Alcatraz/master/Scripts/install.sh | sh原创 2016-04-23 09:31:48 · 970 阅读 · 0 评论 -
字典转模型
在使用许多数据的时候一般用模型来存储数据的类。开发时当我们从文件中取出数据到字典后,应该将数据从字典取出装到模型中,将面向字段开发转为面向模型开发。 模型对象的参数选择:copy:NSStringStrong:一般对象weak:UI控件assign:基本数据类型。 PS:注意模型方法的规范。比如需要一个需要一个initWithXXX原创 2016-04-23 22:18:43 · 831 阅读 · 0 评论 -
iOS通知模式
iOS的通知中心功能介绍负责协调应用中不同对象之间的消息通信。每个应用程序都会有个通知中心(NSNotifictionCenter)的实例。任何对象都可以通过通知中心发布通知,并携带信息。其他对象可以对可能发消息的对象进行订阅。这就类似与广播和广播订阅中。发送源于接受者的关系可以说一对一也可以是一对多。 一条完整的通知 需要包含三个部分:1、通知名称(标题):(原创 2016-05-17 23:42:05 · 433 阅读 · 0 评论 -
Objective-序列帧动画一般使用步骤:
序列帧动画一般使用步骤: //0、判断图片是否已加载 if (self.annimImg.isAnimating){ return; } //1、设置动画数组 self.annimImg.animationImages = imageArray; //2.设置播放次数(1次) self.annim原创 2016-04-21 23:06:22 · 506 阅读 · 0 评论 -
iOS设置状态栏
一、设置状态栏的风格:重写父类方法preferredStatusStyle:返回状态栏的风格属性(UIStatusBarStyle)preferredStatusStyle{Return UIStatusStyleLightContent;(PS:返回的这个描述状态栏的值是枚举)} 二、设置状态栏的可见性,重写方法prefersStatus原创 2016-05-17 13:03:44 · 358 阅读 · 0 评论 -
UITableView的用法(Objective-C)
两种形式:分组UITableViewStylePlain不分组UITableViewStyleGrouped 一、实现列表一般过程:1、遵守table数据源协议UITableViewDataSource>3、设置数据源2、重写方法:两个://必须实现:返回每个分组中的条目- (NSInteger)tableView:(UITableV原创 2016-05-17 12:55:34 · 551 阅读 · 0 评论 -
objective-c拉伸图片的三种方法
1、[myimage resizableImageWithCapInsets:UIEdgeInsetsMake(h, w, h, w)];2、[myimage stretchableImageWithLeftCapWidth:(NSInteger) topCapHeight:(NSInteger)]; 3、[myimage resizableImageWithCapIn原创 2016-05-17 12:54:00 · 915 阅读 · 0 评论 -
iOS单例模式学习
单例模式通常有两种:懒汉式和饿汉式区别:懒汉式:第一次用到单例对象时再创建单例对象。饿汉式:饿汉式:一进入程序就创建。在iOS开发中为了节约资源因此推荐使用懒汉式。iOS中懒汉式使用的一般过程:1、头文件中自定义一个shareInstance类方法用来返回单例对象2、实现文件中重写allocwithzero方法,返回要执行单例的对象(对象为全原创 2016-02-28 10:11:42 · 329 阅读 · 0 评论 -
NsThread学习
创建和启动:NSThread *thread = [[NSThreadalloc]initWithTarget:selfselector:@selector(download)object:nil]; thread.name =@"下载线程"; [thread start];参数分析:调用方法、传递参数PS:init方法后仅仅是创建了线程对象,需要通原创 2016-02-21 00:55:33 · 364 阅读 · 0 评论 -
GCD学习
一、GCD使用 使用步骤:1、定制任务2、将任务添加到队列中 GCD执行任务的两种方式:1、同步:只能在当前线程中执行任务不具备开线程的功能dispatch_sync(dispatch_queue_tqueue,dispatch_block_tblock); 2、异步:可以在新的线程中执行任务,具备开线程的能力dispatch_async(d原创 2016-02-23 12:48:37 · 264 阅读 · 0 评论 -
swift字符串
初始化var emptyString = "" // empty string literal var anotherEmptyString = String() // initializer syntax // 这两个字符串都为空,并且两者等价 遍历字符串 for characterin"teeeeesdfs".chara原创 2016-04-01 14:10:47 · 357 阅读 · 0 评论 -
Objective-C中KVO简单用法
KVO:(Key-ValueObserving)objective-c中可以使用KVO来监听属性改变。(通过设置观察者来实现)两个方法:1、设置监听- (void)observeValueForKeyPath:(nullableNSString*)keyPath ofObject:(nullableid)object change:(nullableNSDictionaryNS原创 2016-03-20 10:14:34 · 558 阅读 · 0 评论 -
Swift之可选数据类型
刚刚看swift语言,被可选类型弄得很绕,看了好几遍,大概整理了一下。使用可选类型的意义:当一个我们访问一个可选类型的常量或者变量的时候当它的值为空时不会报空指针而是表示没有值(避免了空指针的错误)。即使用可选(optionals)来处理值可能缺失的情况。可选类型的值有两种情况:有值、或者为nil。 PS:Swift 的nil和Objective原创 2016-04-01 01:39:17 · 589 阅读 · 0 评论 -
快速排序-Swift 实现
如题,上代码:func quick_sort(arr: inout [Int]) { if arr.count == 0 { print("Data error") } _q_sort(arr: &arr, start: 0, end: arr.count - 1) } func _q_...原创 2018-06-19 17:30:45 · 335 阅读 · 0 评论