使用WebKit载入网页

开发App的过程中,常常会遇到在App内部加载网页,通常用UIWebView加载。这个自iOS2开始使用的网页加载器一直是开发的心病:加载速度慢,占用内存多,优化困难。如果加载网页多,还可能因为过量占用内存而给系统kill掉。

iOS8以后,苹果推出了新框架Wekkit,提供了替换UIWebView的组件WKWebView。各种UIWebView的问题没有了,速度更快了,占用内存少了。通过WebKit向用户显示网页,并且能够使用网页自定义用户的交互和体验。

一、WKWebView

网页视图,可以载入网页内容。需要创建URL类型的实例,包含准备载入的URL,然后将这个URL房子URLReq[……]

Read more

了解滚动视图UIScrollview

滚动视图无处不在,我们一定使用过时钟和联系人应用,是否观察到了它们的内容是可以滚动的呢?这就是滚动视图。

滚动视图的一些常用属性:

  • contentSize:

contentSize属性使滚动视图遵循其显示内容的大小,指明了滚动视图内容的宽度和高度。我们需要确保滚动视图的contentSize属性被正确赋值,否则,它里面的内容不回滚动。默认是CGSizeZero

  • contentInset:

类似于Web的padding属性,contentInset是UIEdgeInsets类型,指明了滚动视图内容的内部间距。设置内间距,会增加contentSize属性的大小。默[……]

Read more

使用UIActivityViewController显示分享选项

如图所示,iOS内置了大量的分享选项,都构建于iOS的核心之中。用户可以在任何地方分析任意的内容。第三方应用(比如我们开发的应用)也能够利用iOS现有的全部分享能力,而无需考虑具体底层的服务以及iOS如何提供这些分享选项。整件事情的好处就在于,只需要提出想要分享什么,iOS会选出这些分享选项并且有能力处理好分享。例如,如果读者想分享图片或者文字,iOS会显示更多的选项。

fenxian01

在iOS中,分享数据是非常容易的事情,只需要实例化UIActivityViewController类,并且使用它的activityItems: applicationActivities: 初始化构造函数。这里介[……]

Read more

警告视图或者操作列表

使用UIAlertController类可以创建警告视图和操作列表。

最简单的警告视图:

最简单的操作列表:

警告视图和操作列表都可以用UIAlertController类简单地创建出来。这个类提供了UIAlertController的实例,可以在其他的视图控制器中通过 present: animated flag: completion:方法将其展示出来。

创建警告视图或者操作列表通常包含以下步骤:

  1. 创建UIAlertController实例并且指定类型:是警告视图还是操作列表。
  2. 针对每个添加到警告视图或者操作列表的操作(“操作”通常表现为一个[……]

Read more

富文本

富文本是个好东西。许多程序员都有在UI中将混合样式的字符串显示在一行文本中的需求。比如,在一行文本中将“常规” “斜体”文字显示在一块,也就是说一个词是斜体而其余的是普通文本。或者还可能需要为一句话中的某个词设置下划线。对此,有些人可能会选择Web视图。但是,这绝不是一个最佳的选择,因为Web视图的渲染非常慢,会严重影响应用的性能。

构筑属性字符串的最佳方式就是使用NSMutableAttributedString类的init初始化方法,传入一个string字符串。其中NSMutableAttributedString是NSAttributedString的可变版本,调用后会得到一个属性[……]

Read more

键盘通知

在iOS开发过程中,监听键盘的弹出事件,修改对应的UI的改变,会使用户体验更加丰富。

当键盘显示或者消失时候,系统会发送相关的通知:

  • UIKeyboardWillShow:当键盘因屏幕上的任意组件(文本框、文本视图等)弹出时,由系统发出通知。
  • UIKeyboardDidShow:当键盘在屏幕上显示时,由系统发出通知。
  • UIKeyboardWillHide:当键盘即将隐藏时,由系统发出通知。
  • UIKeyboardDidHide:当键盘彻底隐藏时,由系统发出通知。

键盘通知中心包含一个字典,可以userInfo属性访问,它包含了键盘的[……]

Read more

简单实现明暗码切换的TextField功能

UITextField文本框是一种常见的信息输入机制,类似于Web表单中的表单字段。iOS9系统自带的UITextField在切换到暗码时会清除之前的输入文本,下面就简单扩展一下UITextField,封装一个实现明暗码的切换的小控件。

功能实现原理很简单,我们通过在通知中心添加观察者的方法,对文本框的输入状态进行监听;通过重写UITextField的 isSecureTextEntry 属性实现对文本框进行二次监听(这里将获取一次键盘焦点定义为一次监听)。

首先我们定义几个变量,用途见备注。
[crayon-58854b190ccd3653812[……]

Read more

UITextField文本框的常用方法

UITextField文本框是一种常见的信息输入机制,类似于Web表单中的表单字段。从显示文本的视觉来看,文本框与标签非常相似,只是文本框在运行时可以接受文本输入。

文本框只接受单行文本的输入和显示。因此,文本框的默认高度是系统定义的。在Interface Builder中,它的高度不能修改。但是如果使用代码创建文本框,则可以修改文本框的高度。虽然修改了高度,但是文本框内显示的文本行数不会改变,永远是显示一行。

UITEXTFIELD文本框的常见属性

borderStyle属性:设置输入框的边框线样式。

background属性:设置一个背景图片

clearButtonMod[……]

Read more

简单了解iOS技术层

Apple 以一系列层的方式来描述iOS实现的技术,其中每层都由可在应用程序中使用的不同框架组成。我们了解iOS技术层,有助于系统的学习iOS开发。

201610121321720131012212437484

我们来简单了解下各层中比较有趣的框架。如果想全面了解所以的框架,可以在Apple Xcode文档中使用层名进行搜索。

Cocoa Touch层

Cocoa Touch层是iOS多个服务成中最高层,Cocoa Touch层有多个框架组成,它们为应用程序提供核心功能(包括多任务和广告功能)。在这些框架中,UIKit它提供的功能比起名称中的UI按时的多得多。

1. UIKit

UIKit提供了大量的功能。它负责启动和结束应用程序、[……]

Read more

UIViewControllerAnimatedTransitioning 过渡动画[下篇]

上一篇我们介绍了UIPresentationController的使用,由于UIPresentationController的加入,UIViewControllerAnimatedTransitioning 类可以比之前少做一些事了,现在,它只负责与呈现相关的ViewController的View的动画了,其他额外的View一概不管了,比如我们的透明背景的btnView。

首先我们新建一个类CustomPresentationAnimationController遵守UIViewControllerAnimatedTransitioning协议

我们需要实现协议里的两个协议方法:[……]

Read more