【开发相关】
Zok93
热情中的冷静让人清醒,冷静中的热情使人执着。
展开
-
CollectionView设置UICollectionReusableView头尾视图
// ViewController.m#import "ViewController.h"@interface ViewController ()// 使用sb视图中的FlowLayout@property (weak, nonatomic) IBOutlet UICollectionViewFlowLayout *flowLayout;@endstatic NSString *ID = @"原创 2016-08-16 11:04:10 · 17316 阅读 · 2 评论 -
GCD中的队列与任务组合对比
在GCD队列中,队列的类型不是决定是否开启线程的队列的类型是决定调度方式的 串行队列:每次只调度一个任务,也可以开启子线程并行队列:每次可调度多个任务,一定可以开启子线程串行队列的调度方式决定了它开启再多的线程也没有用,所以只有当它遇到异步任务的时候才会新开一个线程,因为他的调度方式决定了他开一个就够了决定是否开启线程: 同步任务:不开线程,并且无论在串行还是并行队列中都有序执行异步任原创 2016-09-21 15:36:57 · 634 阅读 · 0 评论 -
GCD线程间通信
// GCD的线程间的通信 : 常用代码- (void)GCDDemo{ dispatch_async(dispatch_get_global_queue(0, 0), ^{ NSLog(@"正在努力下载... %@",[NSThread currentThread]); // 如果下载结束回到主线程更新UI dispatch_async(di原创 2016-09-21 15:05:15 · 1364 阅读 · 0 评论 -
GCD主队列死锁和全局队列
每一个应用程序只有一个主线程即只有一个主队列 在线程间通信中一定会使用,文章链接 http://blog.csdn.net/sinat_20559947/article/details/52608333 主队列 : 在主线程 全局队列 : 在子线程#pragma mark - 主队列 + 异步任务 == 正确的打开方式// 主队列使用的注意点 : 一定要将异步的任务添加到原创 2016-09-21 16:24:53 · 549 阅读 · 0 评论 -
NSBlockOperation线程间通信
// 常规书写方式- (void)OPDemo{ // 1.创建队列 : 默认是并发的 NSOperationQueue *queue = [[NSOperationQueue alloc] init]; // 2.创建操作 : 默认是异步的 NSBlockOperation *op = [NSBlockOperation blockOperationWithBlo原创 2016-09-21 16:35:42 · 348 阅读 · 0 评论 -
NSOperation的高级功能
"最大并发数"#import "ViewController.h"@interface ViewController ()@property (nonatomic, strong) NSOperationQueue *queue;@end@implementation ViewController- (void)viewDidLoad { [super viewDidLoad]; s原创 2016-09-21 16:47:40 · 321 阅读 · 0 评论 -
自定义NSOperation
"vc控制器"#import "ViewController.h"#import "DownloaderOperation.h"@interface ViewController ()@property (nonatomic, strong) NSOperationQueue *queue;@end@implementation ViewController- (void)viewDidLoad原创 2016-09-21 17:06:45 · 276 阅读 · 0 评论 -
NSCache使用注意
不能在内存警告里面使用removeallobjects,移除之后再也无法向NSCache中添加数据了原创 2016-09-21 17:08:16 · 481 阅读 · 0 评论 -
SDWebImage常用函数
"加载GIF图"- (void)loadGIF{ NSURL *URL; // 加载网络gif图 URL = [NSURL URLWithString:@"http://photo.l99.com/source/11/1330351552722_cxn26e.gif"]; // 加载本地gif图// URL = [[NSBundle mainBundle] UR原创 2016-09-21 17:15:51 · 462 阅读 · 0 评论 -
自动释放池和消息循环的关系
自动释放池运行循环/消息循环 消息循环保证应用程序不退出消息循环在循环的捕捉消息(UI事件),然后执行消息对应的操作 1.创建:运行循环,检测到事件并启动后,就会创建自动释放池2.销毁:一次完整的运行循环结束之后,就会被销毁运行循环和自动释放池的关系1.程序启动->开启运行循环2.启动之后等待事件的输入3.运行循环检测到触摸事件4.创建事件->准备执行事件的对应方法5.在事件对原创 2016-09-21 17:19:34 · 567 阅读 · 0 评论 -
GCD单例-懒汉式&饿汉式
懒汉式MusicPlayer.h#import <Foundation/Foundation.h>@interface MusicPlayer : NSObject// 定义全局访问点+ (instancetype)sharedMusicPlayer;@endMusicPlayer.m#import "MusicPlayer.h"@implementation MusicPlayer// 懒汉原创 2016-09-21 14:48:08 · 461 阅读 · 0 评论 -
ARC和MRC下Block的使用注意
Block1.是一段代码块,只在被调用的时候执行(类似于方法和函数)2.是一种数据类型(类似于’int’,’NSString’)3.可以定义成临时变量4.可以当做参数传递5.可以定义成属性6.是一种匿名函数(重要,只有函数体,没有函数名)7.是一个指向函数的指针(一个指针对象,block的名字就是指针的地址)8.因为block代码块的内部没有修改和访问外部的变量,所以函数体不会发生变原创 2016-09-21 17:25:25 · 4702 阅读 · 0 评论 -
主线程和子线程中的消息循环
RunLoop-主线程主线程的消息循环是默认开启.在主线程中使用定时源.即定时器.步骤 : 将定时源添加到当前线程的消息循环.- (void)touchesBegan:(NSSet<UITouch *> *)touches withEvent:(UIEvent *)event{ [self timerDemo];}- (void)timerDemo{ // 创建定时器原创 2016-09-21 17:31:52 · 1936 阅读 · 0 评论 -
分类(Category) 中添加属性
在苹果的规定中分类(Category)中是不可以添加自定义属性的, why? 1.分类为什么不能拓展成员变量? 使用alloc初始化的时候,一些系统自定义的类型都有固定的大小,因为他们都有系统定义的固有的成员变量,init就是为这些成员变量赋值 如果,我们在分类中拓展成员变量,那么使用alloc开辟空间的时候,就无法检测到自定义的成员变量,所以使用init开辟空间的时原创 2016-09-26 09:44:20 · 12408 阅读 · 0 评论 -
Swift中设置自定义tabBar按钮的动画效果
将此段代码放到自定义的UITabBarController脚本中即可 //---------------------------------------------------- // 当点击tabBar的时候,自动执行该代理方法(不需要手动设置代理) override func tabBar(_ tabBar: UITabBar, didSelect item: UITa原创 2016-10-23 21:03:47 · 2855 阅读 · 0 评论 -
给自定义tabBar的按钮添加点击放大缩小的动画
// 一句话,写在UITabBarController.m脚本中,tabBar是自动执行的方法// 点击tabbarItem自动调用-(void)tabBar:(UITabBar *)tabBar didSelectItem:(UITabBarItem *)item{ NSInteger index = [self.tabBar.items indexOfObject:it原创 2016-10-16 02:19:34 · 4613 阅读 · 0 评论 -
iOS屏幕适配
iOS-屏幕适配iOS layout机制相关方法– (CGSize)sizeThatFits:(CGSize)size – (void)sizeToFit– (void)layoutSubviews – (void)layoutIfNeeded – (void)setNeedsLayout– (void)setNeedsDisplay – (void)drawRectlayoutSubvie原创 2016-08-05 20:33:52 · 620 阅读 · 0 评论 -
iOS图文混排
自定义NSAttributedString分类// NSAttributedString+Additon.h#import <UIKit/UIKit.h>@interface NSAttributedString (Additon)/// 使用图像和文本生成上下排列的属性文本////// @param image 图像/// @param imageWH 图像宽高///原创 2016-08-18 22:55:14 · 1479 阅读 · 2 评论 -
GCD调度组实现原理
手动实现调度组- (void)groupDemo{ // 调度组 dispatch_group_t group = dispatch_group_create(); // 队列 dispatch_queue_t queue = dispatch_get_global_queue(0, 0); // 下载图片A // 1.进入调度组 : 给任务做标记原创 2016-09-21 15:02:44 · 1173 阅读 · 0 评论 -
NSDate分类-日期格式化以及日期常用判断
NSDate+LC.h@interface NSDate (LC)/// 是否为今天- (BOOL)isToday;/// 是否为昨天- (BOOL)isYesterday;/// 是否为今年- (BOOL)isThisYear;/// 返回年月日- (NSDate *)dateWithYMD;/// 获得与当前时间的差距- (NSDateComponents *)deltaWithNo原创 2016-09-23 22:21:09 · 578 阅读 · 0 评论 -
POST & GET
#import "ViewController.h"@interface ViewController ()@property (weak, nonatomic) IBOutlet UITextField *usernameTextField;@property (weak, nonatomic) IBOutlet UITextField *passwordTextField;@end@imple原创 2016-09-23 22:06:23 · 779 阅读 · 0 评论 -
Visual Format Language 可视化格式语言
Visual Format Language 可视化格式语言 是苹果公司为了简化Autolayout的编码而推出的抽象语言VFL 语法H: 水平方向V: 垂直方向| 边界[ 视图名称 ]( 常数值 )== >= <= 关系- 距离VFL 示例H:|-0-[button]-0-| 按钮 距离 左右 两边为 0V:|-0-[button]-0-| 按钮 距离 上下 两边原创 2016-08-06 19:44:18 · 673 阅读 · 0 评论 -
Masonry基础语法
Masonry视图居中定义一个视图 200 * 50在任何设备上都摆放在屏幕的中心点make.xxx属性.equalTo(参照对象.mas_属性[如果相同,可以省略]).offset(常数) // 基本语法 [redView mas_makeConstraints:^(MASConstraintMaker *make) { make.centerX.equalTo(s原创 2016-08-06 19:55:53 · 2564 阅读 · 0 评论 -
UIScrollView的滑动原理解析
顾名思义,UIScrollView 就是负责滚动的视图移动设备的屏幕大小是极其有限的,因此直接展示在用户眼前的内容也相当有限当展示的内容较多,超出一个屏幕时,用户可通过滚动手势来查看屏幕以外的内容普通的 UIView 不具备滚动功能,不能显示过多的内容UIScrollView是一个能够滚动的视图控件,可以用来展示大量的内容,并且可以通过滚动查看所有的内容iOS 开发中几个重要的控件都继承自原创 2016-08-06 22:54:28 · 9553 阅读 · 0 评论 -
UIScrollView的缩放原理解析
用代码创建一个可以缩放的图片// ViewController.m#import "ViewController.h"@interface ViewController ()<UIScrollViewDelegate>@property(weak,nonatomic)UIImageView *imageView;@end@implementation ViewController- (voi原创 2016-08-07 00:04:37 · 9517 阅读 · 0 评论 -
UIScrollView的常用属性
UIScrollView常用属性-contentSizescrollView 要滚动就必须设置了滚动视图的 contentSizecontentSize 的 width 决定了水平方向滚动距离contentSize 的 height 决定了垂直方向滚动距离UIScrollView常用属性-contentOffsetscrollView 通过修改 contentOffset 调整内部视图的坐原创 2016-08-07 00:08:36 · 655 阅读 · 0 评论 -
iOS十六进制颜色转换成UIColor
创建UIColor的分类// UIColor+Addition.h#import <UIKit/UIKit.h>@interface UIColor (Addition)/// 使用 16 进制数字创建颜色,例如 0xFF0000 创建红色////// @param hex 16 进制无符号32位整数////// @return 颜色+ (instancetype)colorWithHe原创 2016-08-18 23:02:25 · 3072 阅读 · 0 评论 -
iOS应用新特性界面
//// XTXGuideViewController.m// 新特性界面//// Copyright © 2016年 LongChuang. All rights reserved.//#import "XTXGuideViewController.h"// 1.导入第三方框架#import "Masonry.h"// 2.导入视图头文件#import "XTXGuideV原创 2016-08-09 01:10:56 · 1358 阅读 · 0 评论 -
ScrollView自动布局技巧
scrollView自动布局技巧步骤:1. sb中拖scrollView2. 设置scrollView上下左右为04. 拖一个UIView"yellowView"到scrollView中(不是imageView)5. 设置yellowView的自动布局上下左右为0(此时报错,实际缺少尺寸"无法算出contentSize")6. 设置yellowView和scrollView等宽等高7.原创 2016-08-09 01:28:18 · 2787 阅读 · 0 评论 -
timer定时器
定时器方法(1)// 添加定时器方法- (void)addTimer {#warning mark - 如果在用定时器是忽略它的运行模式时就用下面这个方法 // 给控制器添加一个定时器 让它每3秒调用一次nextPage方法 // self.timer = [NSTimer scheduledTimerWithTimeInterval:2.0 target:self sele原创 2016-08-22 10:13:28 · 416 阅读 · 0 评论 -
清空导航控制器的黑线
/************* 以下两行代码才能把导航条下面的黑线去掉 *********/ // 把导航条自带的背景图片清空 [self.navigationBar setBackgroundImage:[[UIImage alloc]init] forBarMetrics:UIBarMetricsDefault]; self.navigationBar.shadowIma原创 2016-08-22 10:46:32 · 409 阅读 · 0 评论 -
iOS双层数据模型转换
//// ViewController.m// Copyright © 2016年 LongChuang. All rights reserved.//#import "ViewController.h"#import "CarData.h"#import "MyTableViewCell.h"@interface ViewController ()<UITableViewDataS原创 2016-08-10 17:49:55 · 4589 阅读 · 0 评论 -
开发笔记-商家展示界面
程序入口//// LCBusinessTableViewController.m// 口碑页面//// Copyright © 2016年 LongChuang. All rights reserved.//#import "LCBusinessTableViewController.h"#import "LCBusinessData.h"#import "LCMyBusine原创 2016-08-11 23:11:42 · 814 阅读 · 0 评论 -
iOS外卖星级显示
//// ViewController.m// 外卖星级显示//// Copyright © 2016年 LongChuang. All rights reserved.//#import "ViewController.h"#import "LCLevelView.h"@interface ViewController ()@end@implementation ViewCon原创 2016-08-11 19:28:43 · 955 阅读 · 0 评论 -
iOS分割线的操作方式
让分割线紧贴屏幕// 清空分割线的边距- (void)viewDidLoad {self.tableView.separatorInset = UIEdgeInsetsZero;self.tableView.layoutMargins = UIEdgeInsetsZero;}// cell将要显示的时候会调用此方法-(void)tableView:(UITableView *)tabl原创 2016-08-13 01:44:44 · 833 阅读 · 0 评论 -
iOS设置行高的多种方式以及优先级区分
优先级: 代理方法中的优先级如下,从高到低 (1).heightForRowAtIndexPath (2).storyboard中TableView的rowHeight (3).storyboard中TableViewCell的rowHeight- (CGFloat)tableView:(UITableView *)tableView heightForRow原创 2016-08-13 02:00:39 · 13210 阅读 · 0 评论 -
iOS数组排序
sortedArrayUsingComparator数组排序方法sortedArrayUsingSelector方法只能升序array = [array sortedArrayUsingSelector:@selector(compare:)];// 给数组排序,块代码的返回值,比较结果// NSOrderedAscending = -1, 上升// NSOrderedSame = 0,原创 2016-08-14 21:38:46 · 5833 阅读 · 0 评论 -
SAX for XML
#import "ViewController.h"#import "VideoModel.h"@interface ViewController () <NSXMLParserDelegate>@end@implementation ViewController { /// 模型数组 NSMutableArray *_videoM; /// 拼接节点之间的内容 NS原创 2016-09-23 22:04:08 · 560 阅读 · 0 评论 -
Refresh for Swift
import UIKit// 自定义控件的高度private let RefreshControlH: CGFloat = 50class RefreshControl: UIControl { override init(frame: CGRect) { super.init(frame: CGRect(x: 0, y: -RefreshContr原创 2016-11-01 09:31:49 · 562 阅读 · 0 评论