Kealdish's Studio.

Kealdish's Studio.

just focus

UIButton之titleLabel、imageView解析

前言

UIButton是我们开发过程中使用频率很高的控件类。在使用UIButton实现需求时,通常会碰到需要改变UIButton中image和title位置和大小的需求。如果对UIButton中的titleLabel和imageView理解不到位的话,只能是不停地修改参数,不停地调试,陷入恶性循环,既低效又很难正确地去实现。为了解决这个问题,我研究出了两套方案,分别是用imageEdgeInsetstitleEdgeInsets组合的方案以及imageRectContentRettitleRectContentRect组合的方案。

UICollectionView Layout学习笔记

概览

UITableViewUIKit视图类中极其重要的一个,我们与之打交道的频率也是极高的。在UIKit视图类中有一个类与UITableview共享一套API设计,但相比UITableview,该类的视图布局更加灵活复杂。这就是UICollectionView。本篇的着重点也放在UICollectionView灵活强大的视图布局上面。

UIImage加载图片方式的研究

常用的UIImage加载图片的方式有以下几种:

  • [UIImage imageNamed:name]
  • [UIImage imageWithContentsOfFile:name]
  • [UIImage imageWithData:data]
  • [UIImage imageWithCGImage:imageRef]
  • [UIImage imageWithCIImage:obj]

以上方法中imageNamed:imageWitData:应用程序会对其自动缓存,不过,它们缓存的实现方式并不相同,后面会有详细说明。除去这两个方法以外剩下的三个方法默认情况下是不会产生缓存的,这三个方法的主要区别在于它们的数据源:imageWithContentsOfFile:从指定文件中创建对象,imageWithCGImage:以CGImageRef来创建对象,imageWithCIImage:以CIImage对象来创建对象。
最后两种方法平时用的相对会少一些,简要解释一下CGImage与CIImage的区别:CGImageRef只能代表位图,如果你需要与bitmap数据打交道,无疑CGImage是非常合适的选择。CGImageRef以CG开头就不难想到CGImageRef的相关操作都需要在Core Graphics中进行,比如混合、遮罩等等。CIImage以CI开头,即Core Image,不难理解CIImage是底层的数据对象,它通常包含了与它相关的图像数据,而不是一个图像。默认情况下,CIImage对象是不会被绘图系统渲染的,除非是得到明确的指令。这种机制(“lazy evaluation”)允许核心绘图系统尽可能高效地运行。CIImage通常被运用在GPU优化图像滤镜算法当中。

Xcode-Target、Project、WorkSpace、Scheme

前言

开发iOS有一段时间了,Xcode用得也越发熟练,但对于Xcode中的一些常用项目结构的概念如TargetProject等却还是一知半解。故将其摘出来搞清楚,避免以后犯概念性错误。

UINavigationBar背景色设置

前言

最近关于UINavigationBar背景色随tableView滚动而渐变的风格很流行,自己也想着研究去实现它,并决定把研究的结果写进这篇文章中。渐变的实现很简单,思路无非是监听tableView的contentOffset属性,在scrollViewDidScroll方法中更新navigationbar背景色的alpha值,我们的重点放在设置navigationbar背景色上。

avatar
Kealdish
Hear my roar.
FRIENDS