Swift3.0 功能一(持续更新)
来源:互联网 发布:淘宝号实名认证几个 编辑:程序博客网 时间:2024/05/29 08:19
http://blog.csdn.net/ios_qing/article/details/52812187ttp://blog.csdn.net/ios_qing/article/details/5281218
http://blog.csdn.net/ios_qing/article/details/52812187
修改项目名称两种方式
1.Bundle name
2.Bundle display name
try
三种处理异常的方式
<code class="language-Objc hljs cs has-numbering" style="display: block; padding: 0px; background: transparent; color: inherit; box-sizing: border-box; font-family: "Source Code Pro", monospace;font-size:undefined; white-space: pre; border-radius: 0px; word-wrap: normal;"><span class="hljs-comment" style="color: rgb(136, 0, 0); box-sizing: border-box;">// 在swift中提供三种处理异常的方式</span><span class="hljs-comment" style="color: rgb(136, 0, 0); box-sizing: border-box;">// 方式一:try方式 程序员手动捕捉异常</span> <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">do</span> { <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">try</span> NSJSONSerialization.JSONObjectWithData(jsonData, options: .MutableContainers) } <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">catch</span> { <span class="hljs-comment" style="color: rgb(136, 0, 0); box-sizing: border-box;">// error异常的对象</span> print(error) }<span class="hljs-comment" style="color: rgb(136, 0, 0); box-sizing: border-box;">// 方式二:try?方式(常用方式) 系统帮助我们处理异常,如果该方法出现了异常,则该方法返回nil.如果没有异常,则返回对应的对象</span> guard <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">let</span> anyObject = <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">try</span>? NSJSONSerialization.JSONObjectWithData(jsonData, options: .MutableContainers) <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">else</span> { <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">return</span> }<span class="hljs-comment" style="color: rgb(136, 0, 0); box-sizing: border-box;">// 方式三:try!方法(不建议,非常危险) 直接告诉系统,该方法没有异常.注意:如果该方法出现了异常,那么程序会报错(崩溃)</span> <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">let</span> anyObject = <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">try</span>!NSJSONSerialization.JSONObjectWithData(jsonData, options: .MutableContainers)</code><ul class="pre-numbering" style="box-sizing: border-box; position: absolute; width: 50px; background-color: rgb(238, 238, 238); top: 0px; left: 0px; margin: 0px; padding: 6px 0px 40px; border-right: 1px solid rgb(221, 221, 221); list-style: none; text-align: right;"><li style="box-sizing: border-box; padding: 0px 5px;">1</li><li style="box-sizing: border-box; padding: 0px 5px;">2</li><li style="box-sizing: border-box; padding: 0px 5px;">3</li><li style="box-sizing: border-box; padding: 0px 5px;">4</li><li style="box-sizing: border-box; padding: 0px 5px;">5</li><li style="box-sizing: border-box; padding: 0px 5px;">6</li><li style="box-sizing: border-box; padding: 0px 5px;">7</li><li style="box-sizing: border-box; padding: 0px 5px;">8</li><li style="box-sizing: border-box; padding: 0px 5px;">9</li><li style="box-sizing: border-box; padding: 0px 5px;">10</li><li style="box-sizing: border-box; padding: 0px 5px;">11</li><li style="box-sizing: border-box; padding: 0px 5px;">12</li><li style="box-sizing: border-box; padding: 0px 5px;">13</li><li style="box-sizing: border-box; padding: 0px 5px;">14</li><li style="box-sizing: border-box; padding: 0px 5px;">15</li><li style="box-sizing: border-box; padding: 0px 5px;">16</li></ul><ul class="pre-numbering" style="box-sizing: border-box; position: absolute; width: 50px; background-color: rgb(238, 238, 238); top: 0px; left: 0px; margin: 0px; padding: 6px 0px 40px; border-right: 1px solid rgb(221, 221, 221); list-style: none; text-align: right;"><li style="box-sizing: border-box; padding: 0px 5px;">1</li><li style="box-sizing: border-box; padding: 0px 5px;">2</li><li style="box-sizing: border-box; padding: 0px 5px;">3</li><li style="box-sizing: border-box; padding: 0px 5px;">4</li><li style="box-sizing: border-box; padding: 0px 5px;">5</li><li style="box-sizing: border-box; padding: 0px 5px;">6</li><li style="box-sizing: border-box; padding: 0px 5px;">7</li><li style="box-sizing: border-box; padding: 0px 5px;">8</li><li style="box-sizing: border-box; padding: 0px 5px;">9</li><li style="box-sizing: border-box; padding: 0px 5px;">10</li><li style="box-sizing: border-box; padding: 0px 5px;">11</li><li style="box-sizing: border-box; padding: 0px 5px;">12</li><li style="box-sizing: border-box; padding: 0px 5px;">13</li><li style="box-sizing: border-box; padding: 0px 5px;">14</li><li style="box-sizing: border-box; padding: 0px 5px;">15</li><li style="box-sizing: border-box; padding: 0px 5px;">16</li></ul>
封装TabBar创建自控制器
<code class="language-Objc hljs cs has-numbering" style="display: block; padding: 0px; background: transparent; color: inherit; box-sizing: border-box; font-family: "Source Code Pro", monospace;font-size:undefined; white-space: pre; border-radius: 0px; word-wrap: normal;"><span class="hljs-comment" style="color: rgb(136, 0, 0); box-sizing: border-box;">//调用封装方法</span> addChildViewController(LXRHomeViewController(), title: <span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box;">"首页"</span>, imageName: <span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box;">"tabbar_home"</span>) addChildViewController(LXRMessageViewController(), title: <span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box;">"消息"</span>, imageName: <span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box;">"tabbar_message_center"</span>) addChildViewController(LXRDiscoverViewController(), title: <span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box;">"发现"</span>, imageName: <span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box;">"tabbar_discover"</span>) addChildViewController(LXRProfileViewController(), title: <span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box;">"我"</span>, imageName: <span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box;">"tabbar_profile"</span>) <span class="hljs-comment" style="color: rgb(136, 0, 0); box-sizing: border-box;">// Swift支持方法的重改:方法名称相同.但是参数类型和个数不同</span><span class="hljs-comment" style="color: rgb(136, 0, 0); box-sizing: border-box;">// private在当前文件中可以访问,其他文件不能访问</span><span class="hljs-comment" style="color: rgb(136, 0, 0); box-sizing: border-box;">// swift3.0 private建议修改为fileprivate</span> <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">private</span> func <span class="hljs-title" style="box-sizing: border-box;">addChildViewController</span>(_ childVc: UIViewController, title : String, imageName : String) { <span class="hljs-comment" style="color: rgb(136, 0, 0); box-sizing: border-box;">//1.设置自控制器的属性</span> childVc.title = title childVc.tabBarItem.image = UIImage(named: imageName) childVc.tabBarItem.selectedImage = UIImage(named: imageName + <span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box;">"_highlighted"</span>) <span class="hljs-comment" style="color: rgb(136, 0, 0); box-sizing: border-box;">//2.包装导航控制器</span> <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">let</span> childNav = UINavigationController(rootViewController: childVc) <span class="hljs-comment" style="color: rgb(136, 0, 0); box-sizing: border-box;">//3.添加控制器</span> addChildViewController(childNav) }</code><ul class="pre-numbering" style="box-sizing: border-box; position: absolute; width: 50px; background-color: rgb(238, 238, 238); top: 0px; left: 0px; margin: 0px; padding: 6px 0px 40px; border-right: 1px solid rgb(221, 221, 221); list-style: none; text-align: right;"><li style="box-sizing: border-box; padding: 0px 5px;">1</li><li style="box-sizing: border-box; padding: 0px 5px;">2</li><li style="box-sizing: border-box; padding: 0px 5px;">3</li><li style="box-sizing: border-box; padding: 0px 5px;">4</li><li style="box-sizing: border-box; padding: 0px 5px;">5</li><li style="box-sizing: border-box; padding: 0px 5px;">6</li><li style="box-sizing: border-box; padding: 0px 5px;">7</li><li style="box-sizing: border-box; padding: 0px 5px;">8</li><li style="box-sizing: border-box; padding: 0px 5px;">9</li><li style="box-sizing: border-box; padding: 0px 5px;">10</li><li style="box-sizing: border-box; padding: 0px 5px;">11</li><li style="box-sizing: border-box; padding: 0px 5px;">12</li><li style="box-sizing: border-box; padding: 0px 5px;">13</li><li style="box-sizing: border-box; padding: 0px 5px;">14</li><li style="box-sizing: border-box; padding: 0px 5px;">15</li><li style="box-sizing: border-box; padding: 0px 5px;">16</li><li style="box-sizing: border-box; padding: 0px 5px;">17</li><li style="box-sizing: border-box; padding: 0px 5px;">18</li><li style="box-sizing: border-box; padding: 0px 5px;">19</li></ul><ul class="pre-numbering" style="box-sizing: border-box; position: absolute; width: 50px; background-color: rgb(238, 238, 238); top: 0px; left: 0px; margin: 0px; padding: 6px 0px 40px; border-right: 1px solid rgb(221, 221, 221); list-style: none; text-align: right;"><li style="box-sizing: border-box; padding: 0px 5px;">1</li><li style="box-sizing: border-box; padding: 0px 5px;">2</li><li style="box-sizing: border-box; padding: 0px 5px;">3</li><li style="box-sizing: border-box; padding: 0px 5px;">4</li><li style="box-sizing: border-box; padding: 0px 5px;">5</li><li style="box-sizing: border-box; padding: 0px 5px;">6</li><li style="box-sizing: border-box; padding: 0px 5px;">7</li><li style="box-sizing: border-box; padding: 0px 5px;">8</li><li style="box-sizing: border-box; padding: 0px 5px;">9</li><li style="box-sizing: border-box; padding: 0px 5px;">10</li><li style="box-sizing: border-box; padding: 0px 5px;">11</li><li style="box-sizing: border-box; padding: 0px 5px;">12</li><li style="box-sizing: border-box; padding: 0px 5px;">13</li><li style="box-sizing: border-box; padding: 0px 5px;">14</li><li style="box-sizing: border-box; padding: 0px 5px;">15</li><li style="box-sizing: border-box; padding: 0px 5px;">16</li><li style="box-sizing: border-box; padding: 0px 5px;">17</li><li style="box-sizing: border-box; padding: 0px 5px;">18</li><li style="box-sizing: border-box; padding: 0px 5px;">19</li></ul>
根据Json文件,通过字符串获取数据
<code class="language-Objc hljs cs has-numbering" style="display: block; padding: 0px; background: transparent; color: inherit; box-sizing: border-box; font-family: "Source Code Pro", monospace;font-size:undefined; white-space: pre; border-radius: 0px; word-wrap: normal;"><span class="hljs-comment" style="color: rgb(136, 0, 0); box-sizing: border-box;">//1.获取JSON文件路径</span>guard <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">let</span> jsonPath = Bundle.main.path(forResource: <span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box;">"MainVCSettings.json"</span>, ofType: nil) <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">else</span> { LXRLog(message: <span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box;">"没有获取到对应的文件路径"</span>) <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">return</span>}<span class="hljs-comment" style="color: rgb(136, 0, 0); box-sizing: border-box;">//2.读取json文件中的内容</span>guard <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">let</span> jsonData = <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">try</span>? Data(contentsOf: URL(fileURLWithPath: jsonPath)) <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">else</span> { LXRLog(message: <span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box;">"没有获取到json文件中数据"</span>) <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">return</span>}<span class="hljs-comment" style="color: rgb(136, 0, 0); box-sizing: border-box;">//3.将Data转成数组</span>guard <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">let</span> anyObject = <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">try</span>? JSONSerialization.jsonObject(with: jsonData, options: .mutableContainers) <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">else</span> { <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">return</span>}guard <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">let</span> dictArray = anyObject <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">as</span>? [[String : AnyObject]] <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">else</span>{ <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">return</span>}<span class="hljs-comment" style="color: rgb(136, 0, 0); box-sizing: border-box;">//4.遍历字典,获取对应的信息</span><span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">for</span> dict <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">in</span> dictArray{ <span class="hljs-comment" style="color: rgb(136, 0, 0); box-sizing: border-box;">//4.1获取控制器的对应的字符串</span> guard <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">let</span> VcName = dict[<span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box;">"vcName"</span>] <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">as</span>? String <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">else</span> { <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">continue</span> } <span class="hljs-comment" style="color: rgb(136, 0, 0); box-sizing: border-box;">//4.2获取控制器显示的title</span> guard <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">let</span> title = dict[<span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box;">"title"</span>] <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">as</span>? String <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">else</span> { <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">continue</span> } <span class="hljs-comment" style="color: rgb(136, 0, 0); box-sizing: border-box;">//4.3获取控制器显示的图标名称</span> guard <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">let</span> imageName = dict[<span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box;">"imageName"</span>] <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">as</span>? String <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">else</span> { <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">continue</span> } <span class="hljs-comment" style="color: rgb(136, 0, 0); box-sizing: border-box;">//4.4添加自控制器</span> addChildViewController(VcName, title: title, imageName: imageName)}<span class="hljs-comment" style="color: rgb(136, 0, 0); box-sizing: border-box;">/**************************************************/</span><span class="hljs-comment" style="color: rgb(136, 0, 0); box-sizing: border-box;">// Swift支持方法的重改:方法名称相同.但是参数类型和个数不同</span><span class="hljs-comment" style="color: rgb(136, 0, 0); box-sizing: border-box;">// private在当前文件中可以访问,其他文件不能访问</span><span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">private</span> func <span class="hljs-title" style="box-sizing: border-box;">addChildViewController</span>(_ childVcName: String, title : String, imageName : String) { <span class="hljs-comment" style="color: rgb(136, 0, 0); box-sizing: border-box;">//0.获得命名空间</span> guard <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">let</span> nameSpace = (Bundle.main.infoDictionary![<span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box;">"CFBundleExecutable"</span>] <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">as</span>? String) <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">else</span> { LXRLog(message: <span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box;">"没有获取命名空间"</span>) <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">return</span> } <span class="hljs-comment" style="color: rgb(136, 0, 0); box-sizing: border-box;">//1.根据字符创获取对应的Class</span> guard <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">let</span> ChildVcClass = NSClassFromString(nameSpace + <span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box;">"."</span> + childVcName) <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">else</span> { LXRLog(message: <span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box;">"没有获取到字符创对应的Class"</span>) <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">return</span> } <span class="hljs-comment" style="color: rgb(136, 0, 0); box-sizing: border-box;">// 2.将对应的AnyObject转成控制器的类型</span> guard <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">let</span> childVcType = ChildVcClass <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">as</span>? UIViewController.Type <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">else</span> { LXRLog(message: <span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box;">"没有获取对应控制器的类型"</span>) <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">return</span> } <span class="hljs-comment" style="color: rgb(136, 0, 0); box-sizing: border-box;">// 3.创建对应的控制器对象</span> <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">let</span> childVc = childVcType.init() <span class="hljs-comment" style="color: rgb(136, 0, 0); box-sizing: border-box;">//4.设置自控制器的属性</span> childVc.title = title childVc.tabBarItem.image = UIImage(named: imageName) childVc.tabBarItem.selectedImage = UIImage(named: imageName + <span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box;">"_highlighted"</span>) <span class="hljs-comment" style="color: rgb(136, 0, 0); box-sizing: border-box;">//5.包装导航控制器</span> <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">let</span> childNav = UINavigationController(rootViewController: childVc) <span class="hljs-comment" style="color: rgb(136, 0, 0); box-sizing: border-box;">//6.添加控制器</span> addChildViewController(childNav)}</code><ul class="pre-numbering" style="box-sizing: border-box; position: absolute; width: 50px; background-color: rgb(238, 238, 238); top: 0px; left: 0px; margin: 0px; padding: 6px 0px 40px; border-right: 1px solid rgb(221, 221, 221); list-style: none; text-align: right;"><li style="box-sizing: border-box; padding: 0px 5px;">1</li><li style="box-sizing: border-box; padding: 0px 5px;">2</li><li style="box-sizing: border-box; padding: 0px 5px;">3</li><li style="box-sizing: border-box; padding: 0px 5px;">4</li><li style="box-sizing: border-box; padding: 0px 5px;">5</li><li style="box-sizing: border-box; padding: 0px 5px;">6</li><li style="box-sizing: border-box; padding: 0px 5px;">7</li><li style="box-sizing: border-box; padding: 0px 5px;">8</li><li style="box-sizing: border-box; padding: 0px 5px;">9</li><li style="box-sizing: border-box; padding: 0px 5px;">10</li><li style="box-sizing: border-box; padding: 0px 5px;">11</li><li style="box-sizing: border-box; padding: 0px 5px;">12</li><li style="box-sizing: border-box; padding: 0px 5px;">13</li><li style="box-sizing: border-box; padding: 0px 5px;">14</li><li style="box-sizing: border-box; padding: 0px 5px;">15</li><li style="box-sizing: border-box; padding: 0px 5px;">16</li><li style="box-sizing: border-box; padding: 0px 5px;">17</li><li style="box-sizing: border-box; padding: 0px 5px;">18</li><li style="box-sizing: border-box; padding: 0px 5px;">19</li><li style="box-sizing: border-box; padding: 0px 5px;">20</li><li style="box-sizing: border-box; padding: 0px 5px;">21</li><li style="box-sizing: border-box; padding: 0px 5px;">22</li><li style="box-sizing: border-box; padding: 0px 5px;">23</li><li style="box-sizing: border-box; padding: 0px 5px;">24</li><li style="box-sizing: border-box; padding: 0px 5px;">25</li><li style="box-sizing: border-box; padding: 0px 5px;">26</li><li style="box-sizing: border-box; padding: 0px 5px;">27</li><li style="box-sizing: border-box; padding: 0px 5px;">28</li><li style="box-sizing: border-box; padding: 0px 5px;">29</li><li style="box-sizing: border-box; padding: 0px 5px;">30</li><li style="box-sizing: border-box; padding: 0px 5px;">31</li><li style="box-sizing: border-box; padding: 0px 5px;">32</li><li style="box-sizing: border-box; padding: 0px 5px;">33</li><li style="box-sizing: border-box; padding: 0px 5px;">34</li><li style="box-sizing: border-box; padding: 0px 5px;">35</li><li style="box-sizing: border-box; padding: 0px 5px;">36</li><li style="box-sizing: border-box; padding: 0px 5px;">37</li><li style="box-sizing: border-box; padding: 0px 5px;">38</li><li style="box-sizing: border-box; padding: 0px 5px;">39</li><li style="box-sizing: border-box; padding: 0px 5px;">40</li><li style="box-sizing: border-box; padding: 0px 5px;">41</li><li style="box-sizing: border-box; padding: 0px 5px;">42</li><li style="box-sizing: border-box; padding: 0px 5px;">43</li><li style="box-sizing: border-box; padding: 0px 5px;">44</li><li style="box-sizing: border-box; padding: 0px 5px;">45</li><li style="box-sizing: border-box; padding: 0px 5px;">46</li><li style="box-sizing: border-box; padding: 0px 5px;">47</li><li style="box-sizing: border-box; padding: 0px 5px;">48</li><li style="box-sizing: border-box; padding: 0px 5px;">49</li><li style="box-sizing: border-box; padding: 0px 5px;">50</li><li style="box-sizing: border-box; padding: 0px 5px;">51</li><li style="box-sizing: border-box; padding: 0px 5px;">52</li><li style="box-sizing: border-box; padding: 0px 5px;">53</li><li style="box-sizing: border-box; padding: 0px 5px;">54</li><li style="box-sizing: border-box; padding: 0px 5px;">55</li><li style="box-sizing: border-box; padding: 0px 5px;">56</li><li style="box-sizing: border-box; padding: 0px 5px;">57</li><li style="box-sizing: border-box; padding: 0px 5px;">58</li><li style="box-sizing: border-box; padding: 0px 5px;">59</li><li style="box-sizing: border-box; padding: 0px 5px;">60</li><li style="box-sizing: border-box; padding: 0px 5px;">61</li><li style="box-sizing: border-box; padding: 0px 5px;">62</li><li style="box-sizing: border-box; padding: 0px 5px;">63</li><li style="box-sizing: border-box; padding: 0px 5px;">64</li><li style="box-sizing: border-box; padding: 0px 5px;">65</li><li style="box-sizing: border-box; padding: 0px 5px;">66</li><li style="box-sizing: border-box; padding: 0px 5px;">67</li><li style="box-sizing: border-box; padding: 0px 5px;">68</li><li style="box-sizing: border-box; padding: 0px 5px;">69</li><li style="box-sizing: border-box; padding: 0px 5px;">70</li></ul><ul class="pre-numbering" style="box-sizing: border-box; position: absolute; width: 50px; background-color: rgb(238, 238, 238); top: 0px; left: 0px; margin: 0px; padding: 6px 0px 40px; border-right: 1px solid rgb(221, 221, 221); list-style: none; text-align: right;"><li style="box-sizing: border-box; padding: 0px 5px;">1</li><li style="box-sizing: border-box; padding: 0px 5px;">2</li><li style="box-sizing: border-box; padding: 0px 5px;">3</li><li style="box-sizing: border-box; padding: 0px 5px;">4</li><li style="box-sizing: border-box; padding: 0px 5px;">5</li><li style="box-sizing: border-box; padding: 0px 5px;">6</li><li style="box-sizing: border-box; padding: 0px 5px;">7</li><li style="box-sizing: border-box; padding: 0px 5px;">8</li><li style="box-sizing: border-box; padding: 0px 5px;">9</li><li style="box-sizing: border-box; padding: 0px 5px;">10</li><li style="box-sizing: border-box; padding: 0px 5px;">11</li><li style="box-sizing: border-box; padding: 0px 5px;">12</li><li style="box-sizing: border-box; padding: 0px 5px;">13</li><li style="box-sizing: border-box; padding: 0px 5px;">14</li><li style="box-sizing: border-box; padding: 0px 5px;">15</li><li style="box-sizing: border-box; padding: 0px 5px;">16</li><li style="box-sizing: border-box; padding: 0px 5px;">17</li><li style="box-sizing: border-box; padding: 0px 5px;">18</li><li style="box-sizing: border-box; padding: 0px 5px;">19</li><li style="box-sizing: border-box; padding: 0px 5px;">20</li><li style="box-sizing: border-box; padding: 0px 5px;">21</li><li style="box-sizing: border-box; padding: 0px 5px;">22</li><li style="box-sizing: border-box; padding: 0px 5px;">23</li><li style="box-sizing: border-box; padding: 0px 5px;">24</li><li style="box-sizing: border-box; padding: 0px 5px;">25</li><li style="box-sizing: border-box; padding: 0px 5px;">26</li><li style="box-sizing: border-box; padding: 0px 5px;">27</li><li style="box-sizing: border-box; padding: 0px 5px;">28</li><li style="box-sizing: border-box; padding: 0px 5px;">29</li><li style="box-sizing: border-box; padding: 0px 5px;">30</li><li style="box-sizing: border-box; padding: 0px 5px;">31</li><li style="box-sizing: border-box; padding: 0px 5px;">32</li><li style="box-sizing: border-box; padding: 0px 5px;">33</li><li style="box-sizing: border-box; padding: 0px 5px;">34</li><li style="box-sizing: border-box; padding: 0px 5px;">35</li><li style="box-sizing: border-box; padding: 0px 5px;">36</li><li style="box-sizing: border-box; padding: 0px 5px;">37</li><li style="box-sizing: border-box; padding: 0px 5px;">38</li><li style="box-sizing: border-box; padding: 0px 5px;">39</li><li style="box-sizing: border-box; padding: 0px 5px;">40</li><li style="box-sizing: border-box; padding: 0px 5px;">41</li><li style="box-sizing: border-box; padding: 0px 5px;">42</li><li style="box-sizing: border-box; padding: 0px 5px;">43</li><li style="box-sizing: border-box; padding: 0px 5px;">44</li><li style="box-sizing: border-box; padding: 0px 5px;">45</li><li style="box-sizing: border-box; padding: 0px 5px;">46</li><li style="box-sizing: border-box; padding: 0px 5px;">47</li><li style="box-sizing: border-box; padding: 0px 5px;">48</li><li style="box-sizing: border-box; padding: 0px 5px;">49</li><li style="box-sizing: border-box; padding: 0px 5px;">50</li><li style="box-sizing: border-box; padding: 0px 5px;">51</li><li style="box-sizing: border-box; padding: 0px 5px;">52</li><li style="box-sizing: border-box; padding: 0px 5px;">53</li><li style="box-sizing: border-box; padding: 0px 5px;">54</li><li style="box-sizing: border-box; padding: 0px 5px;">55</li><li style="box-sizing: border-box; padding: 0px 5px;">56</li><li style="box-sizing: border-box; padding: 0px 5px;">57</li><li style="box-sizing: border-box; padding: 0px 5px;">58</li><li style="box-sizing: border-box; padding: 0px 5px;">59</li><li style="box-sizing: border-box; padding: 0px 5px;">60</li><li style="box-sizing: border-box; padding: 0px 5px;">61</li><li style="box-sizing: border-box; padding: 0px 5px;">62</li><li style="box-sizing: border-box; padding: 0px 5px;">63</li><li style="box-sizing: border-box; padding: 0px 5px;">64</li><li style="box-sizing: border-box; padding: 0px 5px;">65</li><li style="box-sizing: border-box; padding: 0px 5px;">66</li><li style="box-sizing: border-box; padding: 0px 5px;">67</li><li style="box-sizing: border-box; padding: 0px 5px;">68</li><li style="box-sizing: border-box; padding: 0px 5px;">69</li><li style="box-sizing: border-box; padding: 0px 5px;">70</li></ul>
代码创建Window
<code class="language-Objc hljs avrasm has-numbering" style="display: block; padding: 0px; background: transparent; color: inherit; box-sizing: border-box; font-family: "Source Code Pro", monospace;font-size:undefined; white-space: pre; border-radius: 0px; word-wrap: normal;"> // <span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">1.</span>创建Window UIScreen<span class="hljs-preprocessor" style="color: rgb(68, 68, 68); box-sizing: border-box;">.main</span><span class="hljs-preprocessor" style="color: rgb(68, 68, 68); box-sizing: border-box;">.bounds</span>屏幕尺寸window = UIWindow(frame: UIScreen<span class="hljs-preprocessor" style="color: rgb(68, 68, 68); box-sizing: border-box;">.main</span><span class="hljs-preprocessor" style="color: rgb(68, 68, 68); box-sizing: border-box;">.bounds</span>)window?<span class="hljs-preprocessor" style="color: rgb(68, 68, 68); box-sizing: border-box;">.rootViewController</span> = LXRMainTabBarController()window?<span class="hljs-preprocessor" style="color: rgb(68, 68, 68); box-sizing: border-box;">.makeKeyAndVisible</span>() </code><ul class="pre-numbering" style="box-sizing: border-box; position: absolute; width: 50px; background-color: rgb(238, 238, 238); top: 0px; left: 0px; margin: 0px; padding: 6px 0px 40px; border-right: 1px solid rgb(221, 221, 221); list-style: none; text-align: right;"><li style="box-sizing: border-box; padding: 0px 5px;">1</li><li style="box-sizing: border-box; padding: 0px 5px;">2</li><li style="box-sizing: border-box; padding: 0px 5px;">3</li><li style="box-sizing: border-box; padding: 0px 5px;">4</li></ul><ul class="pre-numbering" style="box-sizing: border-box; position: absolute; width: 50px; background-color: rgb(238, 238, 238); top: 0px; left: 0px; margin: 0px; padding: 6px 0px 40px; border-right: 1px solid rgb(221, 221, 221); list-style: none; text-align: right;"><li style="box-sizing: border-box; padding: 0px 5px;">1</li><li style="box-sizing: border-box; padding: 0px 5px;">2</li><li style="box-sizing: border-box; padding: 0px 5px;">3</li><li style="box-sizing: border-box; padding: 0px 5px;">4</li></ul>
便利(convenience)构造函数
便利构造函数通常用在对系统的类进行构造函数的扩充时使用
便利(convenience)构造函数的特点:
1.便利构造函数通常都是写在 extension 里面
2.便利构造函数init前面加上 convenience
3.在便利构造函数中需要调用self.init()
Selector参数两种写法:
1.Selector(“方法名”)
2.”方法名”
3.swift3.0版本#selector(类名.方法名)
事件监听本质:
1.将方法包装成@SEL->类中查找方法列表->根据@SEL找到imp指针(函数指针)->执行函数
2.注意:swift中将一个函数声明成fileprivate,那么该函数不会被添加到方法列表中
3.如果在fileprivate前面加上@objc,那么该方法仍然会被添加到方法列表中
Swift限定作用域访问级别
在swift 3.0 之前,swift 提供3种不同的访问级别
1.
public
(公开)2.
internal
(内部)–>系统默认3.
private
(私用)swift 3.0 private 将会被重新命名为 fileprivate
1.
public
(公开)2.
internal
(内部)3.
fileprivate
文件内私有)4.
private
(私有)
设置图片拉伸
弹簧动画效果
<code class="language-Objc hljs java has-numbering" style="display: block; padding: 0px; background: transparent; color: inherit; box-sizing: border-box; font-family: "Source Code Pro", monospace;font-size:undefined; white-space: pre; border-radius: 0px; word-wrap: normal;"><span class="hljs-javadoc" style="color: rgb(136, 0, 0); box-sizing: border-box;">/** * Duration: 持续时间 * delay: 延迟 * Damping: 阻力系数(0~1),越大效果越不明显 * Velocity: 速度 * options: 速度枚举 * animations: 动画 * completion: 完成 */</span> UIView.animate(withDuration: TimeInterval, delay: TimeInterval, usingSpringWithDamping: CGFloat, initialSpringVelocity: CGFloat, options: UIViewAnimationOptions, animations: () -> Void, completion: ((Bool) -> Void)?((Bool) -> Void)?(Bool) -> Void)</code><ul class="pre-numbering" style="box-sizing: border-box; position: absolute; width: 50px; background-color: rgb(238, 238, 238); top: 0px; left: 0px; margin: 0px; padding: 6px 0px 40px; border-right: 1px solid rgb(221, 221, 221); list-style: none; text-align: right;"><li style="box-sizing: border-box; padding: 0px 5px;">1</li><li style="box-sizing: border-box; padding: 0px 5px;">2</li><li style="box-sizing: border-box; padding: 0px 5px;">3</li><li style="box-sizing: border-box; padding: 0px 5px;">4</li><li style="box-sizing: border-box; padding: 0px 5px;">5</li><li style="box-sizing: border-box; padding: 0px 5px;">6</li><li style="box-sizing: border-box; padding: 0px 5px;">7</li><li style="box-sizing: border-box; padding: 0px 5px;">8</li><li style="box-sizing: border-box; padding: 0px 5px;">9</li><li style="box-sizing: border-box; padding: 0px 5px;">10</li></ul><ul class="pre-numbering" style="box-sizing: border-box; position: absolute; width: 50px; background-color: rgb(238, 238, 238); top: 0px; left: 0px; margin: 0px; padding: 6px 0px 40px; border-right: 1px solid rgb(221, 221, 221); list-style: none; text-align: right;"><li style="box-sizing: border-box; padding: 0px 5px;">1</li><li style="box-sizing: border-box; padding: 0px 5px;">2</li><li style="box-sizing: border-box; padding: 0px 5px;">3</li><li style="box-sizing: border-box; padding: 0px 5px;">4</li><li style="box-sizing: border-box; padding: 0px 5px;">5</li><li style="box-sizing: border-box; padding: 0px 5px;">6</li><li style="box-sizing: border-box; padding: 0px 5px;">7</li><li style="box-sizing: border-box; padding: 0px 5px;">8</li><li style="box-sizing: border-box; padding: 0px 5px;">9</li><li style="box-sizing: border-box; padding: 0px 5px;">10</li></ul>
Swift中
??
的作用1.如果
??
前面的可选类型有值
,那么将前面的可选类型进行解包并且赋值.2.如果
??
前面的可选类型为nil
,那么直接使用??后面的值.
<code class="hljs avrasm has-numbering" style="display: block; padding: 0px; background: transparent; color: inherit; box-sizing: border-box; font-family: "Source Code Pro", monospace;font-size:undefined; white-space: pre; border-radius: 0px; word-wrap: normal;">let iconViewUrl = LXRAccountTool<span class="hljs-preprocessor" style="color: rgb(68, 68, 68); box-sizing: border-box;">.shareInstance</span><span class="hljs-preprocessor" style="color: rgb(68, 68, 68); box-sizing: border-box;">.account</span>?<span class="hljs-preprocessor" style="color: rgb(68, 68, 68); box-sizing: border-box;">.avatar</span>_large ?? <span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box;">""</span></code><ul class="pre-numbering" style="box-sizing: border-box; position: absolute; width: 50px; background-color: rgb(238, 238, 238); top: 0px; left: 0px; margin: 0px; padding: 6px 0px 40px; border-right: 1px solid rgb(221, 221, 221); list-style: none; text-align: right;"><li style="box-sizing: border-box; padding: 0px 5px;">1</li></ul><ul class="pre-numbering" style="box-sizing: border-box; position: absolute; width: 50px; background-color: rgb(238, 238, 238); top: 0px; left: 0px; margin: 0px; padding: 6px 0px 40px; border-right: 1px solid rgb(221, 221, 221); list-style: none; text-align: right;"><li style="box-sizing: border-box; padding: 0px 5px;">1</li></ul>
Swift中
self
使用场景注意: 两个地方需要使用
self
1>如果在一个函数中出现歧义.
2>在闭包中使用当前对象的属性和方法也需要使用
self
动态设置tableViewCell高
必须实现的两个设置!!!
1.设置自动尺寸
2.设置估算高度
<code class="language-Objc hljs rust has-numbering" style="display: block; padding: 0px; background: transparent; color: inherit; box-sizing: border-box; font-family: "Source Code Pro", monospace;font-size:undefined; white-space: pre; border-radius: 0px; word-wrap: normal;"><span class="hljs-comment" style="color: rgb(136, 0, 0); box-sizing: border-box;">///5.设置行高</span><span class="hljs-comment" style="color: rgb(136, 0, 0); box-sizing: border-box;">//自动尺寸</span><span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">self</span>.tableView.rowHeight = UITableViewAutomaticDimension <span class="hljs-comment" style="color: rgb(136, 0, 0); box-sizing: border-box;">//估算高度</span><span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">self</span>.tableView.estimatedRowHeight = <span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">200</span> </code><ul class="pre-numbering" style="box-sizing: border-box; position: absolute; width: 50px; background-color: rgb(238, 238, 238); top: 0px; left: 0px; margin: 0px; padding: 6px 0px 40px; border-right: 1px solid rgb(221, 221, 221); list-style: none; text-align: right;"><li style="box-sizing: border-box; padding: 0px 5px;">1</li><li style="box-sizing: border-box; padding: 0px 5px;">2</li><li style="box-sizing: border-box; padding: 0px 5px;">3</li><li style="box-sizing: border-box; padding: 0px 5px;">4</li><li style="box-sizing: border-box; padding: 0px 5px;">5</li></ul><ul class="pre-numbering" style="box-sizing: border-box; position: absolute; width: 50px; background-color: rgb(238, 238, 238); top: 0px; left: 0px; margin: 0px; padding: 6px 0px 40px; border-right: 1px solid rgb(221, 221, 221); list-style: none; text-align: right;"><li style="box-sizing: border-box; padding: 0px 5px;">1</li><li style="box-sizing: border-box; padding: 0px 5px;">2</li><li style="box-sizing: border-box; padding: 0px 5px;">3</li><li style="box-sizing: border-box; padding: 0px 5px;">4</li><li style="box-sizing: border-box; padding: 0px 5px;">5</li></ul>
storyBoard快捷键
约束控件更新布局
->快捷键cmd + option(alt) + =
图片真实大小显示
->快捷键cmd + =
获取控件最大X.Y值
<code class="language-Objc hljs avrasm has-numbering" style="display: block; padding: 0px; background: transparent; color: inherit; box-sizing: border-box; font-family: "Source Code Pro", monospace;font-size:undefined; white-space: pre; border-radius: 0px; word-wrap: normal;">// 获取maxX->控件+frame+maxXpicCollectionView<span class="hljs-preprocessor" style="color: rgb(68, 68, 68); box-sizing: border-box;">.frame</span><span class="hljs-preprocessor" style="color: rgb(68, 68, 68); box-sizing: border-box;">.maxX</span>// 获取maxY->控件+frame+maxYpicCollectionView<span class="hljs-preprocessor" style="color: rgb(68, 68, 68); box-sizing: border-box;">.frame</span><span class="hljs-preprocessor" style="color: rgb(68, 68, 68); box-sizing: border-box;">.maxY</span></code><ul class="pre-numbering" style="box-sizing: border-box; position: absolute; width: 50px; background-color: rgb(238, 238, 238); top: 0px; left: 0px; margin: 0px; padding: 6px 0px 40px; border-right: 1px solid rgb(221, 221, 221); list-style: none; text-align: right;"><li style="box-sizing: border-box; padding: 0px 5px;">1</li><li style="box-sizing: border-box; padding: 0px 5px;">2</li><li style="box-sizing: border-box; padding: 0px 5px;">3</li><li style="box-sizing: border-box; padding: 0px 5px;">4</li></ul><ul class="pre-numbering" style="box-sizing: border-box; position: absolute; width: 50px; background-color: rgb(238, 238, 238); top: 0px; left: 0px; margin: 0px; padding: 6px 0px 40px; border-right: 1px solid rgb(221, 221, 221); list-style: none; text-align: right;"><li style="box-sizing: border-box; padding: 0px 5px;">1</li><li style="box-sizing: border-box; padding: 0px 5px;">2</li><li style="box-sizing: border-box; padding: 0px 5px;">3</li><li style="box-sizing: border-box; padding: 0px 5px;">4</li></ul>
监听键盘通知
1.添加通知
2.键盘通知实现方法
3.打印信息
0 0
- Swift3.0 功能一(持续更新)
- Swift3.0 功能一(持续更新)
- swift3.0更新
- 一、swift3.0简介
- Xcode8和swift3更新笔记(一)
- SnapKit更新约束-Swift3.0
- 反射常用功能-持续更新
- 功能使用来源(持续更新)
- MyEclipse/Eclipse常用小功能--持续更新...
- Swift3.0学习笔记(一)
- Swift3.0教程(一)-基本的语法
- Swift3.0从入门到放弃(一)
- iOS学习笔记总结一(持续更新)
- [持续更新]JavaScript学习笔记(一)
- [持续更新]HTML5学习笔记(一)
- IOS面试宝典(一)(持续更新)
- Linux常用命令一(持续更新)
- 升级Xcode8.1 遇到的更新swift3.0的问题
- FFMPEG-初探认识-YUV转RGB用例
- C语言中最常用标准库函数
- MySQL上线后根据status状态进行适当优化
- 关于斯诺登暴料部分卡商SIM卡密钥被窃取的几点想法
- react native 环境配置
- Swift3.0 功能一(持续更新)
- Android GridView实现多种不同布局样式显示数据
- SSD的配置安装与测试
- CK+表情数据库及使用
- 删掉系统服务里边的tomcat7服务
- 使用ScriptableObject进行序列化
- n!中末尾0的个数
- 一种解决滑动事件和点击事件冲突的方法
- jconsole监控远程linux tomcat运行情况的配置