swift 订阅
Swift,苹果于2014年WWDC苹果开发者大会发布的新开发语言,可与Objective-C共同运行于macOS和iOS平台,用于搭建基于苹果平台的应用程序。Swift是一款易学易用的编程语言,而且它还是第一套具有与脚本语言同样的表现力和趣味性的系统编程语言。Swift的设计以安全为出发点,以避免各种常见的编程错误类别。 [1]  2015年12月4日,苹果公司宣布其Swift编程语言开放源代码。长600多页的The Swift Programming Language [2]  可以在线免费下载。 展开全文
Swift,苹果于2014年WWDC苹果开发者大会发布的新开发语言,可与Objective-C共同运行于macOS和iOS平台,用于搭建基于苹果平台的应用程序。Swift是一款易学易用的编程语言,而且它还是第一套具有与脚本语言同样的表现力和趣味性的系统编程语言。Swift的设计以安全为出发点,以避免各种常见的编程错误类别。 [1]  2015年12月4日,苹果公司宣布其Swift编程语言开放源代码。长600多页的The Swift Programming Language [2]  可以在线免费下载。
信息
源    于
Objective-C
外文名
Swift
发布时间
2014年6月2日
发行组织
Apple
中文名
雨燕
参考语言
C,JavaScript,Python,Java
系    统
macOS,iOS,linux
SWIFT发展历史
2014-6-3 Swift于WWDC苹果开发者大会发布。 发布(6张) 2014-6-4 《Swift中文版》翻译组在github上进行协同翻译 [3]  。此项目开始不到一周就获得了1067个star。该项目的发起人是北航的大三学生 [4]  。2014-6-12《Swift中文版》第一版发布 [5]  。2015年12月4日,苹果公司宣布其Swift编程语言开放源代码 [3]  。长600多页的The Swift Programming Language [2]  可以在线免费下载。同时可以在苹果官方Github下载 [3]  。2020年最新一期的编程语言排行榜显示,Swift从第15名上升至第9名。 [6] 
收起全文
精华内容
参与话题
问答
  • Swift iOS 9通讯录访问

    千次阅读 2015-11-28 13:23:48
    原创Blog,转载请注明出处 ... 前言:在iOS 9之前,一直使用AddressBook这个framework来访问用户通讯录。但是在iOS 9中,AddressBook被废弃了,转而使用Contacts Framework。 文档 Contacts Framework

    原创Blog,转载请注明出处
    http://blog.csdn.net/hello_hwc?viewmode=list
    我的stackoverflow

    profile for Leo on Stack Exchange, a network of free, community-driven Q&A sites


    前言:在iOS 9之前,一直使用AddressBook这个framework来访问用户通讯录。但是在iOS 9中,AddressBook被废弃了,转而使用Contacts Framework。


    文档


    Demo效果

    20151128131350253201511281314021442015112813141419920151128131449219

    下载链接


    请求访问权限

    相关类
    CNContactStore(线程安全)

    CNContactStore代表了实际设备上存储,通过这个类可以
    - 检查当前的通讯录访问权限
    - 请求访问通讯录权限
    - fetch通讯录内容(支持按条件fetch,和core data 类似)
    - 保存到通讯录

    CNContact(线程安全)

    表示通讯录中一位联系人的Model类,和NSDictionary类似,他有一个子类是可变的CNMutableContact

    示例代码
    保存一个store对象,Demo中采用单例
    注意,Swift中单例这么写是线程安全的

    class ContactsStore{
       static let sharedStore = CNContactStore()
    }

    请求权限

            let authStatus = CNContactStore.authorizationStatusForEntityType(CNEntityType.Contacts)
              let authStatus = ContactsStore.sharedStore.authorizationStatusForEntityType(CNEntityType.Contacts)
            if authStatus == CNAuthorizationStatus.Denied || authStatus == CNAuthorizationStatus.NotDetermined{
                self.contactsStore.requestAccessForEntityType(CNEntityType.Contacts,
                    completionHandler: { (result, error) -> Void in
                        if result == false{
                            let alert = UIAlertController(title: "警告", message: "请在设置中允许通讯录访问,否则App无法正常使用", preferredStyle: UIAlertControllerStyle.Alert)
                            alert.addAction(UIAlertAction(title: "确定", style: UIAlertActionStyle.Cancel , handler: nil))
                            self.presentViewController(alert, animated: true, completion: nil)
                        }
                })
            }

    调用系统的ContactsPickerViewController

    1. 让ViewController实现CNContactPickerDelegate协议
      实现如下方法,处理选中的结果
        func contactPicker(picker: CNContactPickerViewController, didSelectContact contact: CNContact) {
            if let phoneNumber =  contact.phoneNumbers.first?.value as? CNPhoneNumber{
                self.textfield.text = phoneNumber.stringValue
            }
        }

    然后,模态展示

       let contactsVC = CNContactPickerViewController()
            contactsVC.delegate = self;
            presentViewController(contactsVC, animated:true, completion: nil)

    查询全部通讯录

    注意,要先指明需要fetch的属性,

    因为enumerateContactsWithFetchRequest这个函数会抛出异常,所以要用do-try-catch包括起来

         let keys = [CNContactGivenNameKey, CNContactPhoneNumbersKey, CNContactThumbnailImageDataKey]
            let fetchAllRequest = CNContactFetchRequest(keysToFetch:keys)
            do{
                try ContactsStore.sharedStore.enumerateContactsWithFetchRequest(fetchAllRequest) { (contact, pointer) -> Void in
                    self.contacts.append(contact)
                }
            }catch{
    
            }

    条件查询

    条件查询在示例工程中未列出,按照如下步骤查询
    使用如下CNContact方法创建NSPredicate对象

    + predicateForContactsMatchingName:
    + predicateForContactsWithIdentifiers:
    ...

    使用CNContactStore的
    - unifiedContactsMatchingPredicate:keysToFetch:error:
    来查询


    添加

    摘自Swift2.1文档

    import Contacts
    
    // Creating a mutable object to add to the contact
    let contact = CNMutableContact()
    
    contact.imageData = NSData() // The profile picture as a NSData object
    
    contact.givenName = "John"
    contact.familyName = "Appleseed"
    
    let homeEmail = CNLabeledValue(label:CNLabelHome, value:"john@example.com")
    let workEmail = CNLabeledValue(label:CNLabelWork, value:"j.appleseed@icloud.com")
    contact.emailAddresses = [homeEmail, workEmail]
    
    contact.phoneNumbers = [CNLabeledValue(
        label:CNLabelPhoneNumberiPhone,
        value:CNPhoneNumber(stringValue:"(408) 555-0126"))]
    
    let homeAddress = CNMutablePostalAddress()
    homeAddress.street = "1 Infinite Loop"
    homeAddress.city = "Cupertino"
    homeAddress.state = "CA"
    homeAddress.postalCode = "95014"
    contact.postalAddresses = [CNLabeledValue(label:CNLabelHome, value:homeAddress)]
    
    let birthday = NSDateComponents()
    birthday.day = 1
    birthday.month = 4
    birthday.year = 1988  // You can omit the year value for a yearless birthday
    contact.birthday = birthday
    
    // Saving the newly created contact
    let store = CNContactStore()
    let saveRequest = CNSaveRequest()
    saveRequest.addContact(contact, toContainerWithIdentifier:nil)
    try store.executeSaveRequest(saveRequest)
    

    本地化/格式化

    几个常用的类

    • CNContactFormatter
    • CNPostalAddressFormatter
    • CNContact.localizedStringForKey
    • CNLabeledValue.localizedStringForLabel

    举例

    从Contact中拼接出全名

    let fullName = CNContactFormatter.stringFromContact(contact, style: .FullName)
    print(fullName)
    // John Appleseed

    邮政地址

    let postalString = CNPostalAddressFormatter.stringFromPostalAddress(homeAddress)
    print(postalString)
    // 1 Infinite Loop
    // Cupertino
    // CA
    // 95014

    对通讯录的内置Key获取

    let displayName = CNContact.localizedStringForKey(CNContactNicknameKey)
    print(displayName)
    // 昵称,在中文条件下

    最后

    欢迎关注我的CSDN博客,在我每个月都会更新10篇左右的iOS 文章,源码都是Swift的。

    展开全文
  • Swift iOS项目最佳实践汇总

    千次阅读 2016-01-14 18:30:28
  • Swift iOS实现把PCM语音转成MP3格式

    千次阅读 2016-05-05 18:46:33
    最近折腾了swift的语音录制识别和转码,这块还是比较坑的,由于语音识别的准确度实测大概也就80%左右,所以还是需要上传录音文件啊。首先是用讯飞语音SDK实现语音录制和识别(语音听写),第一个坑是讯飞SDK只录制了...

    最近折腾了swift的语音录制识别和转码,这块还是比较坑的,由于语音识别的准确度实测大概也就80%左右,所以还是需要上传录音文件啊。

    首先是用讯飞语音SDK实现语音录制和识别(语音听写),第一个坑是讯飞SDK只录制了PCM格式的文件,这个文件是原始格式,默认比较大,另外播放器支持也不好,因此需要先把它转成mp3,本来考虑使用系统的AudioConverter转aac格式,不过aac好像不能在浏览器上播放。

    转成mp3需要lame库支持,注意国内网搜到的lame.a库不支持64位,所以现在不能用了。

    还好已经有人做了这个事情,直接提供了最新编译脚本和编译好的framework库,地址是https://github.com/wuqiong/mp3lame-for-iOS

    我直接用了上面编译的framework,没有自己去编译,直接把lame.framework拖到工程里。

    然后需要用oc写个封装类,我不确定这个封装类能不能用swift写,毕竟里面用了很多c的语法,还是用oc桥接一层比较保险。oc封装类如下:


    #import <Foundation/Foundation.h>
    #import "AudioWrapper.h"
    #import "lame/lame.h"
    
    @implementation AudioWrapper
    
    + (void)audioPCMtoMP3 :(NSString *)audioFileSavePath :(NSString *)mp3FilePath
    {
        
        @try {
            int read, write;
            
            FILE *pcm = fopen([audioFileSavePath cStringUsingEncoding:1], "rb");  //source 被转换的音频文件位置
            fseek(pcm, 4*1024, SEEK_CUR);                                   //skip file header
            FILE *mp3 = fopen([mp3FilePath cStringUsingEncoding:1], "wb");  //output 输出生成的Mp3文件位置
            
            const int PCM_SIZE = 8192;
            const int MP3_SIZE = 8192;
            short int pcm_buffer[PCM_SIZE*2];
            unsigned char mp3_buffer[MP3_SIZE];
            
            lame_t lame = lame_init();
            lame_set_in_samplerate(lame, 11025.0);
            lame_set_VBR(lame, vbr_default);
            lame_init_params(lame);
            
            do {
                read = fread(pcm_buffer, 2*sizeof(short int), PCM_SIZE, pcm);
                if (read == 0)
                    write = lame_encode_flush(lame, mp3_buffer, MP3_SIZE);
                else
                    write = lame_encode_buffer_interleaved(lame, pcm_buffer, read, mp3_buffer, MP3_SIZE);
                
                fwrite(mp3_buffer, write, 1, mp3);
                
            } while (read != 0);
            
            lame_close(lame);
            fclose(mp3);
            fclose(pcm);
        }
        @catch (NSException *exception) {
            NSLog(@"%@",[exception description]);
        }
        @finally {
            NSLog(@"MP3 converted: %@",mp3FilePath);
        }
        
    }
    @end
    


    然后在桥接文件XXX-Bridging-Header.h中加入

    #import "AudioWrapper.h"

    最后 swift文件的调用如下:

     dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0)) {
                    AudioWrapper.audioPCMtoMP3(path, pathMp3)
    }

    我觉得在主线程调用容易出问题,就新开了个线程调用,实测没有问题。




    展开全文
  • 按照网上的例子,做了一个tableBar,为bar加背景图片,图片却无法显示,求大神解答! 代码如下: let image1 = UIImage(named: "b.png") nav1.tabBarItem = UITabBarItem(title: "会话", image: image1, tag: 1) ...
  • Swift iOS应用开发实战 完整版 (刘铭) pdf扫描版文档教程
  • 我从2009年开始做Android开发,开始接触Swift是在2014年底,当时组里曾经做过一个Demo App,感觉技术还不够成熟没有正式发布。... 今天分享的主题是Java/Android开发人员如何快速上手Swift iOS开发。主要内容如下:

    本文是我在『移动前线』微信群2016年4月28日的分享总结整理。

    我从2009年开始做Android开发,开始接触Swift是在2014年底,当时组里曾经做过一个Demo App,感觉技术还不够成熟没有正式发布。2016年初我们正式使用swift开发上线了销售助手App产品,积累了比较丰富的swift项目实战经验,开源框架都是用的swift版本,大量使用了面向协议和函数式编程。iOS App开发人员基本都是以前安卓版本的开发人员,同时维护安卓和iOS 2个版本,效率很高。

    今天分享的主题是Java/Android开发人员如何快速上手Swift iOS开发。主要内容如下:

    1.   WhyFrom Java/Android to Swift

    2.   Swift语言为什么值得学习?

    3.   Javavs Swift语法比较

    4.   Android和iOS UI开发比较

    5.   Androidvs Swift iOS框架比较

    6.   开发工具比较

     

    1、Why FromJava/Android to Swift

    成本和效率方面,由于目前同业务的Android和iOS App产品功能一致,由一个团队开发可以降低业务同步和沟通成本,避免安卓和iOS两个团队带来的产品功能差异和沟通成本。

    Swift语法更接近Java,相对Objective C上手容易,我2012年曾经带过iOS项目,学过oc,因为无法忍受oc奇怪的语法最后放弃了,但这次学习swift iOS过程还是挺顺畅的,学习的主要门槛反而是Xcode IB的使用。

    Whynot React Native?

    ReactNative我们也要项目在用。但RN思想和语法的学习曲线有些陡,很多有Web开发经验的人都不一定喜欢。另外很多安卓开发者并没有学习过js,学习React Native成本会比较高。学习React Native最终还是要对原生开发有一定的了解。最后,在一些功能复杂的App,React Native用户体验比不上原生 。

     

    Whynot HTML5 Hybrid App?

    用户体验不够好,对于不熟悉Web开发的工程师学习成本比较高。

    2014年我们用ionic框架做过混合App,在iOS上效果可以,但在安卓低端机上比较卡,影响用户体验。

    2、Swift语言为什么值得学习?

    Swift是现在Apple主推的语言,2014年新推出的语言,比Scala等“新”语言还要年轻10岁。2015年秋已经开源。目前在linux上可用,最近已经支持Android NDK;在树莓派上有SwiftyGPIO库,可以通过GPIO控制一些硬件。

    ObjectC is old and ugly,oc是1983年苹果推出的,过于陈旧和臃肿。

    Swift语法类似Scala,Javascript ES6, Java,OC, C++, Python,这个我是按照语法相似度排序的。

    Swift支持多范式编程:面向协议,面向对象和函数式编程 。

    最后,我们还可以通过Swift学习函数式编程思想,这块Java8才支持。

     

    3、Java vs. Swift语法比较

    l 基础语法

    l 函数

    l struct和class

    l Enum

    l Interface vsProtocol

    l MultiThread

     

    3.1基础语法

     

    Java

    Swift

    static final 常量

    Java语言没有,Guava库提供

    Java支持自增++,自减—

    逻辑控制和C基本一致

    Java有main方法

    Java需要;做行结束符

    var 变量,let常量

    可选型Optional,通过if let解包

    Swift不建议使用,3.0版本将不支持自增

    逻辑控制语句更现代

    Swift没有main方法

    Swift不需要行结束符

    Swift的switch 语法和Java及C++很像,但是它没有break,他命中一个case后会自动退出switch。对于几个不同case同样处理的情况,可以case后面连续几个condition,用逗号隔开。

    for循环和Java也基本一样,不过也是不需要括号。for循环中,..<的用法比较方便。下划线符号_(替代循环中的变量)能够忽略具体的值,并且不提供循环遍历时对值的访问。for-in则有点类似与Java中for each循环。

    Swift 2.2中trycatch和do while和java差异很大

     

    3.2函数和闭包

    Swift函数的定义和Java很不一样,Swift函数的定义形如 func foo(arg: Type) ->Return Type:

    Swift中函数是一等公民,可以作为返回值和参数;Swift支持闭包,Java8才支持lambda闭包。

    Swift支持元组,Swift函数可以通过返回元组支持多个返回值。

    Swift函数可以嵌套,即一个函数内部还可以定义函数,Java不支持。

    Swift函数可以接收不定参数,跟Java基本类似

    Swift函数参数可以带默认值,和Python类似,Java函数不可以带有默认值。

    常用的函数式编程方法map,reduce, flatMap,filter,sort,相对于理解抽象的函数式编程概念,我觉得开始时先用好这些函数更重要。

     

    3.3struct vs. class

    struct是值类,class是引用类型,Java语言没有struct,但c/c++/c#语言都有。

    Swift开发推荐使用struct,而不是class。Swift语言实现包括几百个struct,只有几个class。

    Swift类构造方法是init(),析构方法是deinit(),类方法调用跟Java基本一样。

    self相当于Java中的this,传入生命周期不一致的闭包时需要声明为weak。

     

    3.4 Enum枚举

    Android开发谷歌官方不建议使用Enum,影响性能。

    Swift的Enum和Java类似,本质是一个类,里面可以包含函数。

    SwiftEnum语法更简单。

    SwiftEnum支持扩展extension。

     

    3.5 Interface vs. Protocol

     

    Java Interface

    Swift Protocol

    •       可以继承

    •       Interface不能带有具体实现的方法,Java8以后才可以

    •       implements

     

    •       可以继承

    •       protocol可以带有具体实现的方法

    •       extension更强大

     

    Extension扩展就是向一个已有的类、结构体或枚举类型添加新功能(functionality)。这包括在没有权限获取原始源代码的情况下扩展类型的能力(即逆向建模)。扩展和 Objective-C 中的分类(categories)类似。

    Swift 中的扩展可以:

    l  添加计算型属性和计算静态属性

    l  定义实例方法和类型方法

    l  提供新的构造器

    l  定义下标

    l  定义和使用新的嵌套类型

    l  使一个已有类型符合某个接口

    需要注意的是扩展方法的作用域问题,这里不展开讨论。

    3.6 MultiThread多线程

    Java Android

    Swift iOS

    •       Thread,Runnable

    •       Java 5 Concurrency包

    •       Android多线程扩展

    •       AsyncTask,Looper,HandleThread,IntentService…

    •       NSThread

    •       GCD

    •       NSOperation,NSOperationQueue

     

    iOS的多线程相对Java来说比较简单,GCD一天时间基本就能够弄明白。Java的Concurrency包就比较复杂了。

    4、Android,iOS UI开发比较

     

    Java Android

    Swift iOS

    •       Xml layout布局

    •       直接写xml代码,可视化辅助开发

    •       Android可以用Java添加和实现view

    •       Intent页面跳转

    •       Java自定义view,可以在Activity和layout中使用,可视化支持不够好

     

    •       Xib & StoryBoard

    •       AutoLayout和SizeClass,IB自动生成,代码合并困难;

    •       很多团队只好用代码实现UI界面

    •       Segue连线跳转

    •       自定义View可以使用IBDesignable &  runtime attributes

     

     

    iOS开发苹果官方建议使用Storyboard开发UI,好处是比较直观,通过看界面可以更好的理解和维护App。现在Xcode7版本对AutoLayout和SizeClasses的支持越来越好,多分辨率适配变得简单,建议大家放弃使用frame代码写界面的传统做法。

    当然,Storyboard也有下面的弊端:

    界面主要依靠IB生成,Xib代码难以维护,Xcode打开Storyboard或Xib就会对文件产生修改,即使我们没有做实际的修改,git也会显示文件修改了。

    多人协助,同时修改导致冲突,合并困难。

    Storyboard中包含页面多了后会占用了太多内存,导致Xcode卡顿和崩溃。

    错误定位困难,错误提示不清晰,新手难以定位错误。例如不小心删掉了IBOutlet会很难定位。

     

    Storyboard UI 开发实践

    按照业务模块分成多个Storyboard,每人负责的模块避免交叉。

    每个storyboard不要超过10个页面,可以通过Refactor  Storyboard功能重新划分。

    用Container在一个storyboard复用UI模块,用xib在多个storyboard复用UI模块。

    复杂的输入表单,建议用SwiftyForm框架写代码。

     

    5、Android vs Swift iOS框架比较

    Swift框架现在已经很多了,Swift也可以使用OC开源框架,但不推荐使用。我们主要对比介绍项目常用的网络请求框架,JSON解析和图片缓存框架

    网络请求框架

    Java Android

    Swift iOS

    •       Retrofit

    •       OKHTTP

    •       Volley

    •        

    •       Retrofit + RxAndroid

     

    •       Moya   

    •       Alamofire

    •       AFNetworking

    •        

    •       Moya + RxSwift

                                                                                              

    Android发现在一般使用OKHTTP,Retrofit和Volley等网框架行开,iOS发oc时代使用AFNetworking库开发,swift开发推荐使用Alamofire和Moya库。

    Moya Alamofire络请库进行了封装,开不需要写网模型,管理等。使代更加简洁。Moya可以代替自己编写的网络抽象层APIManager。Moya提供了一些很好的特性:

    编译期检查API接口调用的正确性

    通过enum枚举类型清晰的定义不同API的接口

    把接口测试stub作为一等公民,让单元测试变得很简单。

    支持ReactiveX扩展,方便和RxSwift集成。

     

    目前App基本都是使用JSON作为报文协议,Android开发我们一般使用Gson进行解析,在Swift开发中,对比了ObjectMapper,Argo+Curry,SwiftyJson后,我们决定使用ObjectMapper作为JSON解析框架。ObjectMapper支持的特性如下:

    支持把对象转换成JSON,把JSON转换成类对象

    支持嵌套的对象(单一对象,对象列表集合和字典)

    支持自定义的转换函数

    支持结构体struct

    支持Realm和Alamofire集成,AlamofireObjectMapper
    使用例子:

    let user = Mapper<User>().map(JSONString)

    let JSONString = Mapper().toJSONString(user, prettyPrint: true)

    Realm是iOS开发比较流行的针对移动端设计的数据库,代替sqlite,也有Android版本

    图片缓存框架,Android开发常用Glide和Fresco,OC开发一般用SDWebImage,Swift开发推荐用HanekeSwift。

     

    6、开发工具比较

    Android目前主流的开发工具是Android Studio,2014年以前是Eclipse ADT。

    iOS开发一直使用Xcode。对于Java/Android开发人员来说,Xcode上手较难,特别是Interface Builder,Xib和视图代码直接通过连线来生成事件方法,比较挑战开发习惯,并且出现问题定位困难。而Android开发者习惯手写xml界面代码。

    与Android Studio相比,Xcode速度快,但不够稳定,一天崩溃几次很正常。

    模拟器方面,Android的Emulator是虚拟机,启动和安装速度比较慢,iOS是Simulator,速度快,但有些功能不能模拟。都推荐使用真机进行开发。

     

    包管理器&构建工具对比

    Android开发早期用Ant做一些任务处理,后面有些团队借鉴Java EE项目的做法用Maven,AndroidStudio出现后谷歌推荐用Gradle。Android的构建工具比iOS功能要强大很多。

    iOS开发早期用CocoaPods,现在推荐用Carthage,未来Apple官方推出Swift3.0后会推广官方的Swift Package Manager。

    最后介绍下Xcode包管理器Alcatraz,主要提供Xcode插件,模板和色彩模式,相比Android Studio,目前插件还很比较少。


    展开全文
  • Swift iOS项目集成阿里云和百度地图SDK时,archive操作会报下面的错误,原因是缺了相关的bitcode,详见参考文章。解决办法是在编译脚本增加配置 xcodebuild OTHER_CFLAGS="-fembed-bitcode" -target XXXX buildld: ...
  • swift ios开发遇到的坑

    2016-09-24 21:11:55
    今天在用swift2.0开发ios应用时遇到了一个坑 简单描述一下:如下红色的字体就是问题所在 我是在用UIWebView加载网页。在判断当前网页的Url地址为我判断的url时,添加一个分享控件 如果不是就隐藏控件,如果把隐藏的...
  • swift iOS 不执行deinit的原因

    千次阅读 2017-07-21 10:05:59
    swift iOS 不执行deinit的原因: 1、使用了UITabView,没做优化(其中一个优化方案是,在UIView中自定义一个,然后让UIViewController调用) 2、代理使用了强引用,delege = self   改成:  weak var weakSelf...
  • 打开终端,使用命令: xcrun swift -version xcodebuild -showsdks
  • Swift iOS : attributedText 富文本操作

    千次阅读 2017-07-20 09:21:55
    通常给UILabel设置文本,我们都是设置属性UILabel.text。这意味着显示的文本是单一的,整个文本只能有一种同样的文本效果。...如下代码我做了些改变,以便在Swift 3.0上可以运行,本来的代码来自 https://makeap
  • 使用动态文字填充UITableViewCell内容时,需要计算文字占用高度,以便告知UITableViewCell的行高。使用YYText的YYTextLayout可以帮助做到这点。 如下案例,简单封装了YYTextLayout,并通过两个案例调用,演示它的...
  • Swift iOS应用内跳转到设置界面

    千次阅读 2017-09-17 16:06:40
    Swift版//打开设置界面 if let url = URL(string: UIApplicationOpenSettingsURLString){ if (UIApplication.shared.canOpenURL(url)){ UIApplication.shared.openURL(url) } }OC版本//打开设置界面 NSURL * url ...
  • Swift iOS 8调用系统相机的拍照

    千次阅读 2017-07-19 16:59:00
    Apple provides the UIImagePickerController which is an user interface to take photos using the built-in camera of an iOS device. In this tutorial we will take a photo and display it in an Image ...
  • 1. Alamofire Alamofire是一个使用Swift语言编写的HTTP网络库,支持各种 HTTP Method、JSON、文件上传、文件下载和多种认证方法,可以很简单的用于异步网络通信...使用要求:iOS 7.0+/Mac OS X 10.9+、Xcode 6.0。
  • swift ios 平移动画(8种方式)

    千次阅读 2015-12-29 19:28:11
    1.前言转载请注明出处 http://blog.csdn.net/wangguoyang429883793/article/details/50353996 以平移为例子,总结了一下动画的实现方式。 2.实战准备工作: ... enum AniType: Int { case View
  • Swift iOS 13 DarkMode 定义适配夜间模式的 UIColor 夜间模式可以通过事前设置好的一些颜色图片来根据当前所处的模式自动切换颜色和图片 详情看官方视频即可了解: https://www.bilibili.com/video/av58729467 定义...
  • 今天分享的主题是Java/Android开发人员如何快速上手Swift iOS开发。主要内容如下: Why From Java/Android to Swift  Swift语言为什么值得学习?  Java vs Swift语法比较 Android和iOS UI...
  • NavigationController 第一页不显示 NavigationBar 的方法 Swift ios StackOverFlow 原问题地址 UINavigationController 有个方法是 setNavigationBarHidden(),重写这个方法, 在页面即将: - 出现的时候...
  • view controller下有两个imageview 当手按下其中一个并抬起的瞬间,另一个imageview的颜色立即改变,请问如何实现,感谢~
  • Swift iOS开发中,出现“No such module ‘Cocoa’ 的错误: 解决方法 把Cocoa 改成UIKit 原因是OS X 是基于Cocoa的,而iOS 是基于UIKit
  • swift ios的国际化(本地化) 我主要参考的是这位大神的博客 链接: hangge 要注意的地方1 要注意的地方2 在APP内切换语言的几篇博客 链接: 博客1 链接: 博客2 链接: 博客3 ...
  • 本课程主要介绍了开发iOS app的一些基本情况。例如,需要的硬件和软件条件,如何申请开发者账号,XCode的常用功能介绍。后给出一个iOS App的案例来演示开发App的过程。
  • 2、swift开发iOS——swift语法

    万次阅读 2017-02-26 12:08:33
    Swift 引入 我们可以使用 import 语句来引入任何的 Objective-C 框架(或 C 库)到 Swift 程序中。例如 import cocoa 语句导入了使用了 Cocoa 库和API,我们可以在 Swift 程序中使用他们。 Cocoa 本身由 Objective...
  • IOS入门学习视频教程

    2019-12-15 10:09:02
    iOS开发语言 swift 2.2基础 初始Objective-C 秒学Swift开发语言,坐标系计算机语言学 第二阶段:玩转界面 IOS动画编程 IOS多点触控与手势识别 iOS开发必不可少-数据存储 swift2.0-iOS玩转UIKit 仿iMessages聊天...
  • 前面总结了几篇关于Swift的使用,今天要讲的是关于使用Swift开发IOS中蓝牙4.0的开发流程,我以前只是会搞android的蓝牙开发,最近开始了Swift的学习,作为一个swift爱好者,想把蓝牙4.0的这个装逼神器在swift中使用...
  • 3、swift开发iOS——swift数据类型

    万次阅读 2017-03-07 23:14:33
    Swift 数据类型  在程序语言编程时,需要使用各种数据类型来存储不同的信息。 变量的数据类型决定了如何将代表这些值的位存储到计算机的内存中。在声明变量时也可指定它的数据类型。所有变量都具有数据类型,以...

空空如也

1 2 3 4 5 ... 20
收藏数 613,881
精华内容 245,552
关键字:

swift