iOS 视频播放小结
还记得刚学iOS的时候吗?那个时候惊讶于各种牛逼的功能只需要几句简单的代码就可以完成。视频播放也是这样,翻开几本陈旧的iOS教材,你就可以在目录里看到它。没错,它就是: 在MediaPlayer框架中,如果你足够懒,那么利用MPMoviePlayerViewController你便可以三行代码完成你的播放功能。然而,抬头看看各大视频APP,他们的播放界面是这样...【详细】
jiangxinyang 2016年03月24日 赞:1 评论:0 阅读:532
浅谈iOS视频播放的N种解决方案
前言 虽然我不同意你的观点 但我誓死捍卫你说话的权利!--伏尔泰 很长时间没有写文章了,这个题目其实我很早就想动笔写了,因为从我第一个完整的APP项目开始,几乎每一个APP都有视频播放的需求,但是我却迟迟不敢动笔,因为我觉得关于视频播放的底层技术实现我还是一知半解。但还是写下了这篇,希望路过的大神可以不吝赐教,也...【详细】
wzt 2016年03月24日 赞:1 评论:2 阅读:600
iOS底层学习-KVC使用实践以及实现原理
简介 KVC(Key-value coding)键值编码,顾名思义。额,简单来说,是可以通过对象属性名称(Key)直接给属性值(value)编码(coding)“编码”可以理解为“赋值”。这样可以免去我们调用getter和setter方法,从而简化我们的代码,也可以用来修改系统控件内部属性(这个黑魔法且用且珍惜)。 最简单的使用例子 假设有CYXModel类与CYXShopModel类,...【详细】
wzt 2016年03月24日 赞:1 评论:0 阅读:551
iOS 的 APP 在系统中如何适配不同的屏幕的尺寸
标签: 2007年,初代iPhone发布,屏幕的宽高是 320 x 480 像素。下文也是按照宽度,高度的顺序排列。这个分辨率一直到iPhone 3GS也保持不变。 那时编写iOS的App(应用程序),只支持绝对定位。比如一个按钮(x, y, width, height) = (20, 30, 40, 50),就表示它的宽度是40像素,高度是50像素,放在(20, 30)像素的位置。 iPhone 4 2010年,iPhone 4发布,率先采用Retin...【详细】
wzt 2016年03月24日 赞:2 评论:0 阅读:609
删除storyboard的正确方法
删除storyboard的正确方法 一般情况下,我们有时候不想用storyboard,但是直接删除的话,Xcode就会报错。那我今天就来讲一下,正确删除storyboard的方法。 第一,直接将工程中的storyboard直接删除掉,这样你觉得就OK了?你错了,还是要有第二步的。 第二,找到plist文件,将plist文件中的Main storyboard file base name删除掉,如图所示 是的,删除掉。...【详细】
删除storyboard的正确方法
爱喝玉米粥 2016年03月24日 赞:8 评论:20 阅读:4593
UIActivityIndicatorView
加载数据的时候经常有网络不好,或者是其他一些情况引起的加载卡顿现象。UIActivityIndicatorView可以提供一个标准的旋转进度轮,让用户感觉到我们在一直努力加载,达到一个缓和的效果。 代码很简单,大家看一下就会。 //初始化控件 UIActivityIndicatorView * actinity = [[UIActivityIndicatorView alloc] initWithFrame:CGRectMake(0, 0, 100, 100)]; //设置显示样式,这...【详细】
冬日的寒风 2016年03月24日 赞:0 评论:0 阅读:338
GCD的使用
异步(并发) 首先需要获取一个队列 参数1:表示优先级 参数2:表示预留接口 dispatch_queue_t queue = dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT,0); 传入队列 dispatch_async(queue, ^{ NSLog(@"1-%@",[NSThread currentThread]);//打印当前线程 }); dispatch_async(queue, ^{ NSLog(@"2-%@",[NSThread currentThread]); }); dispatch_async(queue, ^{ for(int i =0; i< 300; i++){ for(int j=0; j<...【详细】
CGD
王国松 2016年03月24日 赞:2 评论:0 阅读:239
多线程
(void)viewDidLoad { //创建一个按钮点击后创建线程 UIButton *btn = [[UIButton alloc] initWithFrame:CGRectMake(100,100,100,100)]; btw.backgroundColor = [UIColor redColor]; [btn addTarget:self action:@selector(clickBtn) forControlEvents:UIControlEventTouchUpInside]; [self.view addSubView:btn]; } //点击按钮要执行的方法:创建线程 (void)clickBtn{ //以此方式创建的线程 线程会自动执行 参数1:线程要执行...【详细】
多线程
王国松 2016年03月24日 赞:1 评论:0 阅读:249
归档解档的简单总结
在项目中可以讲自定义对象持久化保存,mark一下我归档解档一个自定义对象 在模型层中使用 -(void)encodeWithCoder:(NSCoder )aCoder{}和 -(id)initWithCoder:(NSCoder)aDecoder{} 实现如下效果 1. -(void)encodeWithCoder:(NSCoder *)aCoder{ [aCoder encodeObject:self.ubm_id forKey:@"ubm_id"]; [aCoder encodeObject:self.createDate forKey:@"createDate"]; [aCoder encodeObject:self.email forKey:@...【详细】
默默besty 2016年03月23日 赞:0 评论:0 阅读:304
协议实现不同界面之间的传值
mark一下 1.定义协议 @protocol ClickPoint (void)clickPonit:(int)key; @end @property (nonatomic,weak)id delegate; 2. 然后在定义协议的controller中,传值 [self.delegate clickPonit:k]; 3.在实现协议的方法中,就可以取出key的值了。 -(void)clickPonit:(int)key{ 可以输出值,或者使用key }【详细】
协议 传值
默默besty 2016年03月23日 赞:0 评论:0 阅读:290
手势冲突问题
之前在界面上添加tab 手势,与table cell的点击事件发生冲突,查了很多资料,自己写一下,mark一下 遵守UIGestureRecognizerDelegate 协议 然后在 (BOOL)gestureRecognizer:(UIGestureRecognizer )gestureRecognizer shouldReceiveTouch:(UITouch )touch 方法里面,判断点击到的对象,来决定手势是否可用。 if ([NSStringFromClass([touch.view class]) isEqualToString:@"UITableViewCellContentView&q...【详细】
ios 手势冲突
默默besty 2016年03月23日 赞:2 评论:0 阅读:566
绘制多边形和不规则按钮
绘制多边形和不规则按钮。要结合上次提到的贝塞尔曲线和CAShapeLayer,去绘制你想要的形状。然后通过layer层的遮罩mask,进行设置,但仅仅这样是不够的,没有遮挡的部分也会响应点击。所以要重写Button的这个方法:pointInside,之后会详细介绍 先简单介绍一下遮罩mask这个属性: 比如layerA是layerB的mask,即layerB.mask = layerA; 那么layerA上透明...【详细】
xiaomu 2016年03月23日 赞:0 评论:0 阅读:367
真机运行error:failed to remove
真机运行时出现 error:failed to remove Users/[username]/Library/Developer/Xfcode/DerivedData/AppName-[woiejfowifjoiwefjweoi]/Build/Products/Relase-Iphoneos/AppName.app/Info.plist:"Info.plist"can not be removed 问题时在真机上把项目删除后再次编译运行就OK了。 还不知道什么原因【详细】
Info.plist 真机运行
a8127480 2016年03月23日 赞:0 评论:0 阅读:292
动态判断UIScrollview滑动方向
UIScrollview滑动的状态可以通过- (void)scrollViewDidScroll:(UIScrollView *)scrollView; 这个代理来实时获取UIScrollview任何时候的偏移量,但是这个方法并不能很好的获取UIScrollview滑动的方向(向上滑动或者向下滑动),不过也可以用一个全局变量来记录下每次滑动的偏移量,然后比较值的大小判断。但是通过监听UIScrollview值的变化可以很轻松的判断滑动...【详细】
UITableView UIScrollView 滑动
李方建 2016年03月23日 赞:0 评论:0 阅读:599
UITableview 的 sectionHead 取消停滞效果
继承于UIScrollView的视图最大的一个优势就是可以随时获取到scrollView.contentOffset的值,根拒这个值的变化可以进行相应的操作实现各种不同的效果,头部拉伸、下拉加载、还有今天说的sectionHead取消停滞效果。代码如下: (void)scrollViewDidScroll:(UIScrollView *)scrollView { CGFloat sectionHeader_Height = 100; if (scrollView.contentOffset.y<= sectionHeader_Height&&sc...【详细】
UITableView Head
李方建 2016年03月23日 赞:0 评论:0 阅读:403
查重网站PaperFree
推荐一个免费的论文查重网站PaperFree:http://www.paperfree.cn【详细】
wzt 2016年03月23日 赞:0 评论:0 阅读:283
各位码农,你真的准备好转产品了吗?
进入码农的第三年,有些人已经成为技术核心或团队Leader,但你也许正在彷徨,是否要转行做产品经理。别忙,先看了下面的分解再下定论。 产品经理到底做什么?看看过来人都怎么说 阿里的Ux@me说: “产品经理”,阿里称之为“PD”(ProductDirector/Designer)。 在阿里巴巴,一个合格的PD首先必须是成功的saler。阿里内部有“打鸡血”的传统,...【详细】
程序员 码农 转型 产品经理 职业规划
jwk666 2016年03月23日 赞:2 评论:0 阅读:639
GCD与NSOpration的区别
1.GCD是底层的C语言构成的API,而NSOperationQueue及相关对象是Objc的对象。 2.在GCD中,在队列中执行的是由block构成的任务,这是一个轻量级的数据结构;而Operation作为一个对象,为我们提供了更多的选择; 在NSOperationQueue中,我们可以随时取消已经设定要准备执行的任务(当然,已经开始的任务就无法阻止了),而GCD没法停止已经加入queue的block...【详细】
iOS字符串 汉字 时间戳 utf8
gedefu 2016年03月23日 赞:0 评论:0 阅读:405
清理Xcode产生的垃圾
Xcode作为iOS、OS X等平台的常用开发工具,其功能强大且又免费,深受大众开发者的喜爱。 然而,Xcode时间用了长了大家一定会发现磁盘空间一下子会被占用非常厉害。可能用了1年的时间,磁盘空间就少了好几十GB!这是怎么回事呢? 因为从Xcode 4开始,每个项目构建之后,其中间生成的文件以及各种资源都会被存放在Xcode目录下,而不是用...【详细】
zenny_chen 2016年03月23日 赞:1 评论:0 阅读:732
为Swift编码引入map()和flatMap(), map those arrays
翻译自:http://alisoftware.github.io/swift/2015/09/20/thinking-in-swift-2/ 翻译者:lzy 欢迎转载,请注明出处: http://zyden.vicp.cc/map-those-arrays/ 这篇文章将讨论将map和flatMap用在Array上 先来看看一段代码: class ListItem { var icon: UIImage? var title: String = "" var url: NSURL! static func listItemsFromJSONData(jsonData: NSData?) -> [ListItem] { guard let nonNilJsonData = jsonData, let json = try? ...【详细】
ios iOS开发 swift GitHub 优化 swift技巧 swift进阶
3826715 2016年03月23日 赞:0 评论:0 阅读:438
sina weixin mail 回到顶部