Swift

Swift 是一种支持多编程范式和编译式的编程语言,是用来撰写 macOS / OS X、iOS、watchOS 和 tvOS 的语言之一。

  • Total
  • 1216
话题聚合
  • swift ~面试题(Optional)

    swift ~面试题(Optional)

    person2.name = "Zhangying"person1.name 和 person2.name 分别是什么答案都是Zhangying 解析: 在swift中,class是引用类型(reference type), 只是指针复制而不是值复制, var person2 = person1创建一个一个person1并复制给了person2, 从这一行开始,任何person1的改变都会在person2中变化二、Optional(可选型)是怎么实现的:Optional类型表示: 有值 / 没有值在Objective-C中并没有Optional类型, 只有nil,并且nil只能用于表示对象类型无值,并不能用于基础类型(int, float),枚举和结构体,基础类型需要返回类似NSNotFound的特殊值来表示无值,所以在Swift中定义了Optinal类型来表示各种类型的无值状态,并规定了nil不能用于非可选的常量和变量,只能用于Optinal类型.//基本用法:...来强制解析值之前,一定要确定Option类型不是nil的隐式解析可选类型 ( implicitly unwrapped optionals )有时候在编写程序中,一个optional类型第一次被赋值后,可以确定它以后总会有值,在这种情况下,使用它时每次都还需要判断和解包optional类型是非常低效的,因为可以确定它总会有值,所以Swift中定义了一个隐式解析可选类型,它在使用时可以自动解析...= "An implicitly unwrapped optional string."let implicitString: String = assumedString // 不需要感叹号但是需要注意:如果你在隐式解析可选类型没有值的时候取值,会触发运行时错误,这和你在无值的普通Optional类型后面加一个惊叹号的情景一样。
  • 高仿喜马拉雅项目 - Swift5版本

    高仿喜马拉雅项目 - Swift5版本

    一、新项目结束了,业余时间用Swift5仿写了喜马拉雅项目,这个项目使用了常见的框架SnapKit、Kingfisher、ESTabBarController-swift、Moya、HandyJSON、SwiftyJSON、MJRefresh、SwiftMessages、SVProgressHUD等框架,页面布局,逻辑处理,从中学习到了很多知识,整个项目用了MVVM架构模式,更加适合有经验和初学者学习,接下来简单介绍下项目的组成...有需要的同学可以到我的Github喜马拉雅项目-Swift版本上面下载哦,喜欢的希望得到您的star哦,谢谢您们...二、项目主要分为首页 我听 直播 发现 我的五个大模块,每个模块里面有对应的详情页面,我把项目主要截图给大家分享出来① 首页1. 首页.png② 首页1.1首页.png③ 我听2.我听.png④ 发现3.发现.png⑤ 我的4.我的.png⑥ 分类列表5.分类.png⑦ 分类列表6.分类列表.png⑧ 详情页面7.分类详情.png⑨ 音乐播放页面8.播放页面.png这个项目的主要页面都放在上面了哦,需要查看的代码的同学可以前往Github喜马拉雅项目-Swift版本,谢谢大家的支持,么么哒。
  • 《swift 进阶》全书总结

    《swift 进阶》全书总结

    如果你有更好的想法和观点欢迎留言告诉我Advanced-SwiftNotes of Advanced Swift. 《swift进阶》学习笔记, swift 4.2第一章 介绍一本书的第一章都是一些博大精深的东西,讲了很多swift这门语言的一些基础概念和特点...第二章 :内建集合类型2.1数组2.2字典2.3 set 2.4 Range第三章 : 集合类型协议3.1 序列3.2集合类型3.3索引3.4切片3.5专门的集合类型第四章 : 可选值4.1---4.3 序列-魔法数问题-可选值概览4.4 强制解包的时机4.5 多灾多难的隐式可选值第五章:结构体和类5.1 值类型---5.2 可变性5.3 结构体5.4 写时复制5.5_6 闭包和可变性_内存5.7_8 闭包和内存第六章:函数6 函数(总体介绍)6.1 函数的灵活性6.2 局部函数和变量捕获6.3 函数作为代理6.4 inout参数和可变方法6.5 计算属性和下标6.6 自动闭包 6.7 总结第七章:字符串7.1 不再固定宽度7.2 字符串和集合7.3 简单的正则表达式匹配器...7.4 ExpressibleByStringLiteral7.5 String的内部结构7.6 编码单元的表示方式7.7 CustomStringConvertible 和 CustomDebugStringConvertible7.8 文本输出流7.9 字符串的性能第八章:错误处理8.1 result类型8.2 错误和函数参数8.3 带有类型的错误8.4 将错误桥接到Objective-C8.5 错误和函数参数8.6 defer语法可以让代码更简洁8.7 错误和可选值8.8 错误链8.9 高阶函数和错误第九章:泛型9.1 重载9.2 对集合采用泛型操作9.3 使用泛型进行代码设计9.4 泛型的工作方式第十章:协议10.1 面向协议编程10.2 协议的两种类型10.3 带有 Self 的协议10.4 协议内幕第十一章:互用性11.1 实践:封装 CommonMark11.2 低层级类型概览11.3 函数指针全书终。
    2019-04-08
  • Swift 5.0 值得关注的特性:更强大的 Raw String

    Swift 5.0 值得关注的特性:更强大的 Raw String

    // 输出: 果句子里面有转义符号反斜杆也很尴尬解决方案5.0 中增加的解决方案是引入一个新的字符 # 声明字符串:let newQutoedString = #"如果句子里面有"双引号"就很尴尬"#...// 输出: 果句子里面有转义符号反斜杆也很尴尬如果字符串声明被 # 号包裹,字符串中的 ” 不再需要转义了..."""#新的问题使用井号表示的字符串结尾的字符是 "#,如果句子中出现了 "# 则不可避免引起歧义,所以需要一种新的方式转义。
    2019-04-02
  • AI自学时代:Python、JavaScript、Swift 、Java如何选?

    AI自学时代:Python、JavaScript、Swift 、Java如何选?

    web开发、数据科学、机器学习等领域都会用到Python,所以,它又被称为是最灵活的编程语言...2014年,Python取代Java成为美国大学最受欢迎的入门编程语言...你如果要将Java作为入门编程语言,那你应该清楚这一点:它比上述其他语言更难学。
    2019-03-30
  • Swift 编程语言发布 5.0 版本

    Swift 编程语言发布 5.0 版本

    苹果开发者 Ted Kremenek 宣布 Swift 编程语言发布 5.0 版本...感谢 ABI 的稳定,Swift 运行时将包含在当前和未来版本的苹果操作系统...Swift 5 还重新实现了 String,改进了字符串实值中 Raw Text。
    2019-03-26
  • [图]华硕推出电竞显示器ROG Swift PG278QE

    [图]华硕推出电竞显示器ROG Swift PG278QE

    在不少游戏发烧友眼中,华硕于2014年推出的ROG Swift PG278Q至今仍是最好的游戏显示器,而随后推出的PG278QR有一些严重的图像质量问题...和此前的ROG Swift PG278Q基本相同,新款PG278QE是一款分辨率为2560*1440的27英寸平面游戏显示器,采用TN材质面板,响应时间为1毫秒...目前华硕官方并未宣布ROG Swift PG278QE游戏显示器的价格。
    2019-03-26
  • Swift 自定义分段控制器和使用

    Swift 自定义分段控制器和使用

    先放上链接地址:https://github.com/FighterLightning/ZHFSegment.git再来看效果图:效果图.gif效果图.png效果图展现了该分段控制器的使用说明:(四种使用场景,已做过屏幕适配)主要:下载该demo,把该demo的ZhfSegment文件复制到自己项目中1.没有导航栏,没有tabBar(使用代码在demo的one文件)2.没有导航栏,有tabBar(使用代码在demo的two文件)3.有导航栏,没有tabBar(使用代码在demo的three文件)3.有导航栏,有tabBar(使用代码在demo的four文件)demo分解:ZhfSegment文件包含ZHFSegmentVC.swift:分段控制器主框架下面这是该分段控制器可根据项目需求修改定制内容    /*常修改*/    var titleScrollViewH :CGFloat = 44 // titleView 的高度    var btnW :CGFloat = 100 //每个按钮的宽    var selectId : NSInteger = 0 // 选中的ID (默认第一个)    var pointArr = [0]{didSet{refreshAngle()}}//确定右上角是否有脚标(0为没有,大于0都有)    var isScroll: Bool = true //是否可以滚动    var titleColor = ZHFColor.black //title默认颜色    var titleSelectedColor = ZHFColor.red //title选中颜色    var titleScale :CGFloat = 1.3 // title有缩放效果,选中时是没选中的1.3倍    var isHave_Navgation :Bool = true //是否有导航    var isHave_Tabbar :Bool = false{didSet{refreshFrame()}}//是否有TabBarZHFColor.swift:自定义的一个颜色类(部分代码展示)// 随机的颜色    class func zhf_randomColor() ->...UIColor {        let r = CGFloat(arc4random() % 256) / 255.0        let g = CGFloat(arc4random() % 256) / 255.0        let b = CGFloat(arc4random() % 256) / 255.0        return UIColor(red: r, green: g, blue: b, alpha: 1.0)    }Common.swift:称放全局变量//设备物理尺寸let ScreenHeight = UIScreen.main.bounds.size.heightlet ScreenWidth = UIScreen.main.bounds.size.widthlet isIphoneX: Bool = ScreenHeight == 812 || ScreenHeight == 896...80.0:50.0  //是否是刘海屏的 tabBar 的高以one文件为例来说明ZHFSegmentVC.swift控制器的使用方法1.首先创建一个继承ZHFSegmentVC的控制器MainOneVC2.设置相关属性     self.titleScrollViewH = 44 //默认是44 这个属性的位置不能和isHave_Navgation颠倒        self.isHave_Navgation = false//如果没有导航栏记得设置这个属性(默认是true)        self.isHave_Tabbar = false//如果有tabBar记得设置这个属性(默认是false)        self.btnW = 80 //默认是100        self.selectId = 1  //选中位置  默认是0        self.titleScale = 1 //字体缩放倍数,默认是1.3, 设置成1不缩放        self.titleColor = ZHFColor.orange        self.titleSelectedColor = ZHFColor.green        //默认是可以通过手势左右滚动 防止子控制器里有ScroolView造成手势冲突,改成false将不能滚动        self.isScroll = true        /**/        //添加子控制器        setupAllChildViewController()        //设置title        setupAllTitle()        /**/        //设置titleBtn下划线 (如果没有注释掉即可)        setTitleBtnBottomLine()        //设置titleView下划线 (如果没有注释掉即可)        setTitleViewBottomLine()        //设置角标 (如果没有注释掉即可)        //根据子控制器个数设置角标(设置角标一定要在设置title之后,0表示没有,1表示有)默认没有        refreshOneAngle()        setAngle()3.添加子控制器       for i in 0 ..5 {            //添加子控制器            let mainOneChildVC: MainOneChildVC = MainOneChildVC()            mainOneChildVC.title = "标题(i)"            mainOneChildVC.titleHeight = self.titleScrollViewH            mainOneChildVC.view.backgroundColor = ZHFColor.zhf_randomColor()//为了区分控制器            addChild(mainOneChildVC)        }    }4.写子控制器相关内容    var tableView:UITableView。
    2019-03-25
  • Swift 5 将使用 UTF-8 作为首选字符串编码

    Swift 5 将使用 UTF-8 作为首选字符串编码

    Swift 5 将首选字符串编码从 UTF-16 切换到 UTF-8 的消息,同时保留与 Objective-C 有效的互操作性...字符串的首选编码将会成为影响 Swift ABI 性能的一部分,因此这次在 Swift 5 版本中为了 ABI 的稳定性而实现该功能是势在必行的...出于与现代计算环境的高效兼容性、简化相关操作以及对性能提升的考虑,Swift 决定在 Swift 5 中使用 UTF-8 作为首选字符串编码。
    2019-03-23
  • [图]微软正为SwiftKey输入法测试全新设计的图标

    [图]微软正为SwiftKey输入法测试全新设计的图标

    自去年年底的Office套件开始,微软开始为旗下的产品引入全新图标设计,并承诺引入更多Fluent Design设计语言...继近期正在测试的Your Phone Companion应用之外,微软旗下的输入法SwiftKey也迎来了更新...全新图标采用相同的设计语言,SwiftKey的徽标同样位于顶部,底部是键盘模样的色块,看起来更加的简约。
    2019-03-19
  • Swift开发入门-进阶知识(二),附demo

    Swift开发入门-进阶知识(二),附demo

    Swift是一门新的语言,不过现在已经出到Swift4了,很多人想学Swift,不知从何开始,今天我就简单说下入门知识,我认为在学习Swift之间最好先把这些基本的知识掌握了,才能更好的去认识它学习它,使用它.全是干货,并且附上demo:Swift开发进阶知识(02)demo.阅读顺序:Swift开发入门-基础知识.Swift开发入门-进阶知识(一).Swift开发入门-进阶知识(二).开始  ---   Swift   --- Coding一、swift进阶知识须知这一节的知识,虽然代码少,但是除此接触下来有点难以理解,特别摘抄出来,单独写这一节,除了要敲代码,还要想一想.这一节是比较理论性的东西另外在这一节,我在这里摘抄的代码会很少,因为分类比较多,容易混乱.大家配合demo理解.二、重载重载: 函数名相同,函数的参数类型或者参数的个数不同,函数就形成了重载,任何函数都可以重载是面向对象的重要特征之一可以简化程序员的记忆根据不同的参数实现不同的需求构造函数的重载有特殊之处. 如果构造函数发生了重载,子类中所有 没有被重写的构造函数都不能够被访问. 原因: 不能够保证子类的必选属性一定有值示例代码:参考附件demo init(name: String) {...}三、KVCKVC是OC的机制,所以在使用的时候有一个特别需要注意的.早Swift3里面在类里面使用KVC的时候,会定义属性: var name: String...,系统会自动在前面加上@objc 前缀.但是在Swift4里面系统不会自动添加,所以需要我们手动添加://nil 和 0的区别,nil是没有分配内存空间,'0'分配了内存空间//在Swift中使用KVC的时候,基本数据类型不能够设置为可选类型@objc var age: Int = 0@objc var name: String。
    2019-03-13
  • Swift开发入门-进阶知识(一),附demo

    Swift开发入门-进阶知识(一),附demo

    Swift是一门新的语言,不过现在已经出到Swift4了,很多人想学Swift,不知从何开始,今天我就简单说下入门知识,我认为在学习Swift之间最好先把这些基本的知识掌握了,才能更好的去认识它学习它,使用它.全是干货,并且附上demo:Swift开发进阶知识(01)demo.阅读顺序:Swift开发入门-基础知识.Swift开发入门-进阶知识(一).Swift开发入门-进阶知识(二).开始 --- Swift --- Coding一、Swift进阶知识须知我在上一篇文章中简单介绍了一下基础知识,认真看完基础知识后,大多数人应该可以试着开发一个小demo.但是想写一个功能性的demo,还是不行的,还是有很多东西我们需要了解.在看这篇文章(demo)前,我建议把入门的基础知识先了解一下.参考链接:https://www.jianshu.com/p/3b01707fed18二、闭包的基本格式闭包是swift中常用的一个知识点闭包和OC中的block类似闭包是提前定义的一段可以执行的代码块可以当做参数 在函数中传递在需要的时候执行代码块引用,完成回调的作用在block中如果访问到了self或者其属性的时候,要注意考虑循环引用我通过几个例子来展示闭包的使用方法1.没有参数没有返回值的闭包  //使用闭包来实现demo1A...}3.有参数有返回值的闭包    func demo3B() {        let closure = { (a: Int,b: Int) ->...}当最后一个参数是闭包的时候,可以形成尾随闭包尾随闭包注意点:1.系统会帮你简写,不需要coder手动简写2.简写的规律:当函数最后一个参数是闭包的时候,函数的参数的 '()' 会提前关闭3.如果函数只有闭包一个参数 '()'可以省略四、 闭包的循环调用闭包和OC的Block类似,都有可能造成循环引用第一种方式: weak self 当self被系统回收时,self的地址会自动指向nil->。
    2019-03-13
  • Swift 定义一个渐变进度条,在项目中的实际应用

    Swift 定义一个渐变进度条,在项目中的实际应用

    3.移动的提示hintBtn //自定义一个继承UIView 的PopProgressBar视图  class PopProgressBar: UIView   //背景区域的颜色和透明度    var backgroundColor1:UIColor  = UIColor.init(red: 0, green: 0, blue: 0, alpha: 0.4)    //进度条view    var progressView: UIView =  UIView()    //提示按钮    var hintBtn: UIButton...PopProgressBar{}//弹出View    func addAnimate(view:PopProgressBar) {}//添加进度条    func addProgressView() {} //为进度条添加遮罩,及layer    @objc func gradentWith(frame:CGRect) {}//当前进度    func passValue(currentValue: CGFloat,allValue: CGFloat) {}//移除或者中断进度    @objc func tapBtnAndcancelBtnClick() {}三、在ViewController里的使用//1定义一下    var progressBar: PopProgressBar...//2.在需要加载进度条的方法里实现//弹出一个模拟渐变进度条            currentValue = 0            progressBar = PopProgressBar()            progressBar.addAnimate(view: progressBar.initPopBackGroundView())  //定时器模拟实时数据更新            displayLink = CADisplayLink.init(target: self, selector: #selector(displayLinkRun))            displayLink.add(to: RunLoop.current, forMode: RunLoop.Mode.defaultRunLoopMode)            progressBar.displayLink = displayLink//3.模拟实时数据更新调用@objc func displayLinkRun(){        if currentValue >。
    2019-03-05
  • 设计模式(Swift) - 3.观察者模式、建造者模式

    设计模式(Swift) - 3.观察者模式、建造者模式

    上一篇 设计模式(Swift) - 2.单例模式、备忘录模式和策略模式中讲了三种常见的设计模式.单例模式: 限制了类的实例化,一个类只能实例化一个对象,所有对单例对象的引用都是指向了同一个对象.备忘录模式: 我们可以把某个对象保存在本地,并在适当的时候恢复出来,app开发中最常见的应用就是用户数据的本地缓存.策略模式: 通过封装业务分支来屏蔽业务细节,只给出相关的策略接口作为切换.1. 观察者模式(Observer Pattern)1. 观察者模式概述观察者模式: 一个对象的变化,能够被另一个对象知道.本文除了介绍基于Runtime的KVO实现及其原理,还会自己动手去现实一套观察者模式,毕竟在swift中使用Runtime并不被推荐.被观察对象(subject): 用来被监听的可观察对象.观察者(observer):  用来监听被观察对象.2. 基于OC Runtime的观察者模式实现1. 实现一个继承自NSObject的可观察对象 // @objcMembers 为了给类中每个属性添加 @objc 关键词,...当给一个对象添加KVO之后,OC会通过Runtime将这个对象的isa指针指向(未设定KVO的对象的isa指针指向该对象的类对象)自己定义的一个原类的子类类对象(NSKVONotifying_xxx),这个子类类对象的isa指针指向原来对象的类对象,并调用这个类对象中的set方法,然后去通知监听器哪些值发生了改变.KVO具体的实现原理在Swift4中,并没有在语言层级上支持KVO,如果要使用需要导入Foundation和被观察对象必须继承自NSObject,这种实现方式显然不够优雅.4. 实现一个不基于Runtime的观察者模式KVO的观察者模式本质上还是通过拿到属性的set方法去搞事情,基于这样的原理我们可以自己实现.直接贴代码,新建一个Observable的swift文件public class Observable {...public static let independent = Character(rawValue: 1 Person中定义了三个属性,area地区,character性格,hobby爱好,其中地区只能是一个值,性格和爱好可以支持多个值.Character和Hobby可以通过传入一个值,设置多个值.2. Builder// MARK: - Builder。
    2019-02-27
  • 关于Swift中的指针的那些事

    关于Swift中的指针的那些事

    这三个属性也是我们经常使用的,对应还有三个从实例对象中获取的方法playgroud 介绍代码struct Test {    let res1: Bool = false    let res2: Int = 0    let res3: Bool = false}print("(MemoryLayout.stride)") // 24因为这个类不是我们首要要介绍的,所以就只是大概介绍内存指针指针定义:在计算机科学中,**指针(Pointer)**是编程语言中的一个对象,利用地址,它的值直接指向(points to)存在电脑存储器中另一个地方的值...Swift中认为所有的指针相关操作都是不安全的,所以所有指针相关的结构体都会包含有前缀UnsafeSwift 中一共有8个结构体SwiftObjective-c描述UnsafePointerconst T *指针及其所指向的内存内容均不可变UnsafeMutablePointerT *指针及其所指向的内存内容均可变UnsafeBufferPointerconst T * []是一个指针数组内容均不可变UnsafeMutableBufferPointerT * []UnsafeRawPointerconst void *UnsafeMutableRawPointervoid *UnsafeBufferRawPointervoid * []首先要说一个实例类对象如何转化为指针UnsafePointer代码展示:struct Obj {    var name: Int = 5}var obj = Obj()let pointer = withUnsafePointer(to: &...在苹果的官方文档中,关于UnsafeRawPointer的定义为A raw pointer for accessing untyped data.一个用来访问未定义类型的指针OverviewThe UnsafeRawPointer type provides no automated memory management, no type safety, and no alignment guarantees. You are responsible for handling the life cycle of any memory you work with through unsafe pointers, to avoid leaks or undefined behavior.UnsafeRawPointer 提供了没有自动内存管理,没有类型安全,与内存对齐控制保证。
    2019-02-26
  • Acer发布新款Swift3超极本:NVIDIA MX 250独显、5499元

    Acer发布新款Swift3超极本:NVIDIA MX 250独显、5499元

    逛京东商城的时候,刚好发现原来Acer已经准备了一款新的蜂鸟Swift 3轻薄本,将会使用Core i5-8265U+NVIDIA GeForce MX250显卡,售价为5499元,现在已经在京东商城开启预约...外观维持不变,机身依旧采用金属拉丝铝打造,A/C面以及触控板边缘采用钻切工艺,整机轻薄仅厚17.95mm,重1.45公斤,四种时尚配色(烈焰红、樱粉金、品蓝和星光银)可满足年轻用户需求...目前据我们挖掘到更深层次的资料,发现MX230、MX250都是马甲产品,采用Pascal核心,而且都是只有384个CUDA单元。
    2019-02-22
  • Swift 5 字符串插值之美

    Swift 5 字符串插值之美

    extension String.StringInterpolation { /// 可选值插值样式 public enum OptionalStyle { /// 有值和没有值两种情况下都包含单词 `Optional` case descriptive /// 有值和没有值两种情况下都去除单词 `Optional` case stripped /// 使用系统的插值方式,在有值时包含单词 `Optional`,没有值时则不包含 case `default` } /// 使用提供的 `optStyle` 样式来插入可选值 public mutating func appendInterpolation(_ value: T..., optStyle style: String.StringInterpolation.OptionalStyle) { switch style { // 有值和没有值两种情况下都包含单词 `Optional` case .descriptive: if value == nil { appendLiteral("Optional(nil)") } else { appendLiteral(String(describing: value)) } // 有值和没有值两种情况下都去除单词 `Optional` case .stripped: if let value = value { appendInterpolation(value) } else { appendLiteral("nil") } // 使用系统的插值方式,在有值时包含单词 `Optional`,没有值时则不包含 default: appendLiteral(String(describing: value)) } } /// 使用 `stripped` 样式来对可选值进行插值 /// 有值和没有值两种情况下都省略单词 `Optional` public mutating func appendInterpolation(describing value: T...) { appendInterpolation(value, optStyle: .stripped) }}// "There's Optional(23) and nil""There's (value1, optStyle: .default) and (value2, optStyle: .default)"// "There's Optional(23) and Optional(nil)""There's (value1, optStyle: .descriptive) and (value2, optStyle: .descriptive)"// "There's 23 and nil""There's (describing: value1) and (describing: value2)"插值不仅仅用于调整可选值的输出方式,在其他方面也很有用。
    2019-02-21
  • Swift对Alamofire的简单封装

    , success : @escaping (_ responseObject : [String : AnyObject]) ->...(), failure : @escaping (_ error : NSError) ->...[String : AnyObject]{                    success(value)                }            case .failure(let error):                failure(error as NSError)            }        }    }}作者:雪山飞狐_91ae链接:https://www.jianshu.com/p/637423a60c7c。
  • 每个APP都用得上的SegmentedView Swift

    每个APP都用得上的SegmentedView Swift

    JXSegmentedView效果预览指示器效果预览说明GifLine固定宽度Line与cell等宽Line延长Line延长+偏移RainbowLine彩虹DotLine点线DoubleLine双线Triangle三角形底部Triangle三角形顶部Background椭圆形Background椭圆形+阴影Background遮罩有背景Background遮罩无背景Background渐变色(渐变是固定的)Gradient渐变色(渐变随着位置变动)Image底部Image背景混合使用以下指示器支持上下位置切换:JXSegmentedIndicatorLineView、JXSegmentedIndicatorRainbowLineView、JXSegmentedIndicatorDotLineView、JXSegmentedIndicatorDoubleLineView、JXSegmentedIndicatorTriangleView、JXSegmentedIndicatorImageViewCell样式效果预览说明Gif颜色渐变文字渐变大小缩放大小缩放+字体粗细大小缩放+点击动画大小缩放+cell宽度缩放TitleImage_TopTitleImage_LeftTitleImage_BottomTitleImage_RightTitleImage_只有图片TitleOrImage(高仿腾讯视频)数字红点多行富文本多种cell混用特殊效果预览说明Gif数据源过少 isItemSpacingAverageEnabled为true数据源过少 isItemSpacingAverageEnabled为falseSegmentedControl参考SegmentedControlViewController类导航栏使用参考NaviSegmentedControlViewController类嵌套使用参考NestViewController类个人主页(上下左右滚动、header悬浮)参考PagingViewController类 更多样式请点击查看JXPagingView库数据加载&...func segmentedView(_ segmentedView: JXSegmentedView, scrollingFrom leftIndex: Int, to rightIndex: Int, percent: CGFloat) {}contentScrollView列表容器使用示例直接使用UIScrollView自定义使用示例因为代码比较分散,而且代码量也比较多,所有不推荐使用该方法...cell样式定制类:遵从JXSegmentedViewDataSource协议的类指示器类:遵从JXSegmentedIndicatorProtocol协议的UIView类列表容器:官方推荐JXSegmentedListContainerView类,特殊情况可以使用UIScrollView自定义指示器样式自定义需要继承JXSegmentedIndicatorProtocol协议,点击参看JXSegmentedIndicatorProtocol提供了继承JXSegmentedIndicatorProtocol协议的基类JXSegmentedIndicatorBaseView,里面提供了许多基础属性。
    2019-02-15
  • iOS 应用之间的跳转(OC&Swift)

    iOS 应用之间的跳转(OC&Swift)

    提示:不想添加白名单是可以的,其他的app分享到微信,它确信你的app存在,就不需要在白名单添其他app的URL Scheme,也就是不需要使用 canOpenURL判断是否可以跳转 是否可以跳转、设置白名单,如果你要跳转其他的app,就要在自己的app的 info.plist 设置白名单,添加其他app的URL Scheme,白名单的字段是:LSApplicationQueriesSchemes,下面我们在 Test1添加白名单白名单的设置2.4、在Test1项目跳转到Test2项目测试,代码如下我们把上面 1.2中的里面的url换为下面,在同一个手机上运行 Test1 和 Test2 两个项目跳转效果OC 版本:后面的代码都是  1.2中的里面的代码NSURL *url = [NSURL URLWithString:@"test2://"]...在自己的app跳转其他的app的一定要用canOpenURL检测一下,微信不在白名单添加其他app的URL Scheme的原因是它确信你的app存在,不需要用canOpenURL判断2.6、常用白名单字段(更多的白名单字段在mob平台iOS开发文档查看)新浪sinaweibo,...let success = UIApplication.shared.openURL(url as URL)。
    2019-02-01

相关链接

为你发现的专属好站