前几篇文章介绍了Autolayout的用法,但要知道那只是Autolayout的冰山一角。其中用Autolayout创建ScrollView就有点特殊,今天单独拿出来记录。 首先,拖一个UIScrollView上来: 设置必备的约束:x , y , width , height. 然后就是UIScrollView特殊的第一点:需要设置其ContentView! 所以你需要另外拖一个UIView上作为它的内容视图。 除此之外,就是UIScrollView特别的第二点了,就是你必须设置ContentView对应于UIScrollView的Leading Space、Trailing Space、Top Space、Bottom Space以及其width、height. 这里设置Leading

相信很多刚接触CALayer的人都会遇到一下几个麻烦: 1、为什么修改anchorPoint会移动layer的位置? 2、CALayer的position点是哪一点呢? 3、anchorPoint与position有什么关系? 我也迷惑过,在网上也翻了很多教程,但最终都没有解决我的困惑,最终,我看到了这篇博文才算明白。现在我讲详细讲解一下这里面的纠结的关系,保证这是你最后一次纠结这两个概念。Here we go! 1.总览 每一个UIView内部都默认关联着一个CALayer, UIView有frame、bounds和center三个属性,CALayer也有类似的属性,分别为frame、bounds、position、

昨晚开始,看到Smartisan OS中的首页PageControl,突发奇想,能不能自己在iOS中也实现这种很赞的效果,于是今天连忙写了出来,怀着激动的心情特此分享。 惯例,先上例子: iOS首页的PageControl ———— Smartisan OS首页的PageControl ———— 可以看到,Smartisan OS中的PageControl小点会跟着页面的移动跟着移动,而iOS中则是当滑到下一页的时候硬生生地跳到下一个空白圆点。不可否认,这一点确实是Smartisan OS中的效果做的好。那么我们有办法实现吗?答案是肯定的。下面介绍。 1.创建图层 为了便于复用,我们需要创建一个继承与UIView的类

今天是周六,用了一天的时间自己尝试做一个UICollectionView。完全是因为昨天看了一整天的UICollectionView的新特性,看得是自我感觉极好,感觉真简单,准备今天用半天时间完成两个Demo。结果还是印证了那句话:自己动手做才知道没那么简单。现记录。 先看效果: 1、新建一个项目 新建一个Single View Application: 然后把Storyboard中的默认的ViewController视图删掉,接着把文件列表中的ViewController.h和ViewController.m也都删掉: 2、拖拽一个Collection View Controller到Storyboard 然后大概是这样: 选中Collection View

最近我的第三方微博客户端KittenYang快完成了,但我才意识到之前很多Trick没有及时记在这个博客里。所以现在能留下什么就留点什么吧。因为我已经等不及着手下一个作品了。 今天我要说的是,怎么在你的键盘中集成微博的表情键盘。 效果像这样: 考虑到复用,我们最好把这个表情键盘封装成一个类,方便以后凡是用到表情键盘的地方都可以快速调用。下面我来仔细介绍一下设计思路。 *准备工作 新建EmotionView : UIView. 首先,我们需要一些准备工作,你可以到这里 下载到我开源的代码。里面有一个face/emoticons.plist 文件,这个文件是一个字典,大概就长这样: 解读一下这个plist文件,这一整个是一个数组,

今天我在我的第三放微博客户端 KittenYang 中使用定位服务发现,由于使用Xcode6进行编译,在iOS8中之前老一套的 CLLocationManager 使用规则已经不适用了。好在经过搜索和询问我终于找到了iOS8下的解决办法,下面做个笔录。 首先在 .h文件 中定义一个属性: @property (nonatomic, strong) CLLocationManager *locationManager; 并且遵守CLLocationManagerDelegate委托: @interface NearbyViewController: BaseViewController<CLLocationManagerDelegate> 之后在 viewDidLoad

话不多说,先看今天要实现的效果图: 正如你看到的那样,今天我来介绍一下如何实现UITbaleView实现监听contentView的偏移量,然后去实现相应的操作(比如上面的gif里面就实现了dismissModalView)。其实我要坦白的一点是,这个真的没有什么技术含量,但这件事的意义在于它让你学会思考如何让你的App更加易用和人性化。就拿这个GIF来说,如今iPhone6/iPhone6 Plus的面世导致App在交互上也必须得跟着发生变化,在大屏上很难再够到顶部的 cancel 按钮。所以,用识别TableView下拉一定距离后实现关闭当前界面会十分方便。在我看到,大屏手机上顶部还有交互按钮的App全是反人类,全是没有用心做产品的表现。不是说只要放大界面撑满大屏幕就好了,我们要做的是思考如何舒服地使用大屏。 Back to topic!

开始之前,我先要反省一下自己。我有一个坏毛病,就是看到好的技术类文章会条件反射地保存到Pocket,然后就结束了,以为这样就算掌握了。时间久了,看到满满的Pocket保存的优秀的文章,我就意识到每次只存不看可不行。所以,问题不可怕,发现问题对症下药解决它才重要。于是我想了个方法,如果当天看到好的文章,那就别等了,趁热打铁说什么都要就消化完,哪怕熬夜也给我看完。 今天我做的笔记是如何使用Xcode6的 SizeClass 和 Autolayout 。 一、什么是SizeClass? 首要,我们知道随着iPhone6/iPhone6

鉴于我开这个博客的初衷是记录自己平时的技术积累,而我平时又属研究iOS最多,因此这个博客在一定程度上可以说是以iOS技术为主的博客。既然研究iOS,那我在博客的一开始就有必要普及一些基础性、底层的东西。好,今天我们先来认识CocoaPods。 1、什么是CocoaPods? 首先你要知道 “第三方类库” 这个名词。第三方类库,用最通俗易懂的语言讲就是:别人写好的代码,然后你可以直接拿来用。用最少的时间实现自己需要的功能。这就是第三方类库。这也程序员伟大的地方————开源精神。 好,现在你已经大概对第三方类库有了大致的概念了。那么,如果你的项目中有很多这样的第三方类库(这对商业App来说简直是必然的)