Tag: ios9

如何支持iOs 9function,同时保持iOs 8支持?

基本上问题在于标题。 我相信有一种方法可以将您的应用程序发布到iOs的早期版本(在这种情况下为8),同时仍然可以使用较新OS版本的独有function。 示例:我的应用程序最低支持iOs 8.3,并且最新发布的iOs 9,我想添加支持强制触摸(这是只在iOs 9中可用),但在同一时间,我希望能够修复错误并做UI改进,并将更新发送到两个版本。 主要的应用程序做到这一点,例如,FB所以必须有一种方式,但我找不到它,我放弃:( 编辑 :有没有一个干净的方式来做到这一点? 没有检查respondsToSelector和这些东西? 像单独的项目? 或者也许xcconfig文件可以做到这一点? 我只是想知道..因为当你谈论一个企业/大型应用程序时,有一个if else每个ios 9的目标function并不是一个很好的解决scheme

在UISearchController的search栏上隐藏取消button

我试图隐藏在UISearchControllersearch栏的取消button,但不幸的是在viewDidLoad()中设置以下内容不起作用: override func viewDidLoad() { super.viewDidLoad() searchResultsTableController = UITableViewController() searchResultsTableController.tableView.delegate = self searchController = UISearchController(searchResultsController: searchResultsTableController) searchController.searchResultsUpdater = self searchController.searchBar.sizeToFit() searchResultsView.tableHeaderView = searchController.searchBar searchController.delegate = self searchController.dimsBackgroundDuringPresentation = false searchController.searchBar.delegate = self searchController.searchBar.searchBarStyle = .Minimal searchController.searchBar.showsCancelButton = false definesPresentationContext = true } 我也尝试在这个委托方法中使用上面的代码: func didPresentSearchController(searchController: UISearchController) { searchController.searchBar.showsCancelButton = false } 这种方法的工作原理,但隐藏它之前会显示取消button,这是不理想的。 有什么build议么?

协议扩展,变异函数

我使用的是swift 2.0,我在协议上有一个协议和一个扩展来创build一个方法的默认实现,代码如下: protocol ColorImpressionableProtocol { var lightAccentColor: UIColor? {get set} var accentColor: UIColor? {get set} var darkAccentColor: UIColor? {get set} var specialTextColor: UIColor? {get set} mutating func adoptColorsFromImpresion(impresion: ColorImpressionableProtocol?) } extension ColorImpressionableProtocol { mutating func adoptColorsFromImpresion(impresion: ColorImpressionableProtocol?){ lightAccentColor = impresion?.lightAccentColor accentColor = impresion?.accentColor darkAccentColor = impresion?.darkAccentColor specialTextColor = impresion?.specialTextColor } } 我后来在我的代码试图调用这个方法,并得到一个错误,读取: “不能在不可变的值上使用变异成员:'self'是不可变的” 代码如下: init(impresion: […]

MPMoviePlayer在iOS 9中

我已经做了iOS 8的function在后台播放电影,现在当我想在iOS 9中使用它,它给了我一个警告,并说,最好不要使用MPMoviePlayer,而是使用AVPlayer。 但是我对AVPlayer一无所知。 我怎样才能将其转换为适当的function没有使用AVPlayer而不是MPMoviePlayer的警告? inheritance人的function: func playVideo() ->Bool { let path = NSBundle.mainBundle().pathForResource("video", ofType:"mov") //take path of video let url = NSURL.fileURLWithPath(path!) moviePlayer = MPMoviePlayerController(contentURL: url) //asigning video to moviePlayer if let player = moviePlayer { player.view.frame = self.view.bounds //setting the video size to the view size player.controlStyle = MPMovieControlStyle.None //Hiding the Player controls […]

Swift 2迁移问题

我刚刚在Xcode 7testing版中打开了我的旧项目。 代码在Xcode 6中工作得很好,但是现在显示了很多错误。 我不知道这是什么,有谁能解释为什么发生这种情况,以及如何解决这个问题?谢谢! import UIKit import AVFoundation class ViewController: UIViewController { var player: AVAudioPlayer = AVAudioPlayer() @IBOutlet weak var firstCardImageView: UIImageView! @IBOutlet weak var secondCardImageView: UIImageView! @IBOutlet weak var label: UILabel! var cardNamesArray:[String] = ["dice1","dice2","dice3","dice4","dice5","dice6"] override func viewDidLoad() { super.viewDidLoad() // Do any additional setup after loading the view, typically from a nib. […]

根据Swift中的struct属性删除数组中的重复结构

我做了一个简单的结构,并实现了Equatable协议: extension MyModelStruct: Equatable {} func ==(lhs: NModelMatch, rhs: NModelMatch) -> Bool { let areEqual = lhs.id == rhs.id return areEqual } public struct MyModelStruct { var id : String? var staticId : String? init(fromDictionary dictionary: NSDictionary){ id = dictionary["id"] as? String … } 然后在我的项目中我得到一个[MyModelStruct]的数组,我该怎么做是删除所有具有相同ID的MyModelStruct let val1 = MyModelStruct(id:9, subId:1) let val2 = MyModelStruct(id:10, subId:1) […]

在将Xcode更新到IOS 9之后,启animation面上的应用程序和初始viewcontroller不加载

在Xcode中使用storyboard ,我有一个很好运行的应用程序,但在最新的Xcode更新(IOS 9)之后,应用程序在启动屏幕上进行了扫描。 DidfinishLaunchingWithOptions成功调用并达到函数的结尾,但是初始viewcontroller没有被加载。 如果我将初始视图控制器切换到另一个屏幕,它工作正常.. 怎么可能是初始视图控制器没有加载一个屏幕,它会得到加载,如果我把它设置在第二个屏幕上? 我首先想到的可能是约束或UI元素,但即使在重新设置约束和删除UI元素(这只是一组button)仍然是同样的问题。 在viewcontroller.m中只有基本的代码(并没有被调用,因为我在每个函数中都有控制台日志) 任何人有同样的问题或解决scheme? 编辑1:它似乎是由其中一个用户界面元素,删除所有后,视图加载..现在尝试逐个添加它们来查看是什么原因造成的错误。 编辑2:我跟踪到一个图像视图加上textview在视图中的错误,没有imageview和textview的视图加载,与图像和textview它没有。 为imageviewselect不同的图像似乎并不重要。 试图找出为什么这个imageview或textview是给错误。 编辑3:( 不适用了)有问题的视图在网格中有4个图像和4个文本视图,看起来这些图像压缩了文本视图,当这种情况发生时,视图不会加载。 (也许有些限制不能解决..) 编辑4:视图看起来像这样(由于NDA,我不能张贴屏幕截图) Image | Image Textview | Textview ————————————– Image | Image Textview | Textview 如果我们使用所有的Textviews相同的文本,它的工作原理,但是如果我们改变了正确的Textview 短文本,它stucks和不加载..这是一个错误? 我真的失去了。我重复了同样的实验3次,每次我把文本设置为短的变体,它不起作用,为它的文本值稍长的工作.. 编辑5,问题:文字不能太小 当我们将四个TextView中的一个的文本设置为一个小于十个字符的string时,视图不会加载。 如果我们使用大于十个字符的string(任何string),视图就会加载。 这是一个非常非常奇怪的错误,我们现在正在尝试改变文本视图的边界框大小,看看它是否有什么关系。 用9个字符的string,视图拒绝加载。 用10个字符加载好,没有任何问题。 没有什么约束问题。 当我们使用空格使它至less有10个字符,一切工作正常…这肯定是一个错误..

使用新的PHPhotoLibrary保存exif元数据

我目前使用AVCaptureStillImageOutput获得全分辨率的图片。 我也能够使用以下代码获取exif元数据: [self.stillImageOutput captureStillImageAsynchronouslyFromConnection:videoConnection completionHandler: ^(CMSampleBufferRef imageSampleBuffer, NSError *error) { CFDictionaryRef metaDict = CMCopyDictionaryOfAttachments(NULL, imageSampleBuffer, kCMAttachmentMode_ShouldPropagate); CFMutableDictionaryRef mutableDict = CFDictionaryCreateMutableCopy(NULL, 0, metaDict); NSLog(@"test attachments %@", mutableDict); // set the dictionary back to the buffer CMSetAttachments(imageSampleBuffer, mutableDict, kCMAttachmentMode_ShouldPropagate); NSData *imageData = [AVCaptureStillImageOutput jpegStillImageNSDataRepresentation:imageSampleBuffer]; UIImage *image = [[UIImage alloc] initWithData:imageData]; [self.delegate frameReadyToSave:image withExifAttachments: mutableDict]; }]; 元数据位于mutableDictvariables中。 现在,我想把这张照片保存在两个不同的地方,包括元数据。 […]

引发应用程序传输安全性的exception?

在iOS 9下,我在这里使用了接受的答案: 传输安全性已经阻止了明文HTTP 我将这些条目添加到NSAppTransportSecurity下的Info.plist文件中。 我的应用似乎正常运行,以及执行所有我已经占了的请求。 我仍然收到错误: 应用传输安全已阻止明文HTTP(http://)资源加载,因为它是不安全的。 临时例外可以通过您的应用程序的Info.plist文件进行configuration。 我的问题是,我无法find我的应用程序代码库中这是从哪里来的,我不想让所有域(在我接受的答案中引用的懒惰选项)。 有没有办法提出一个例外,以便我可以find警告的来源?

使用自定义animation时,会在iOS9上忽略edgesForExtendedLayout

当使用UIViewControllerAnimatedTransitioning实现自定义animation时,iOS9似乎忽略了目标视图控制器的edgesForExtendedLayout ,因此内容会在导航栏下方结束。 任何想法为什么发生这种情况? 我已经在https://github.com/nmarkovic04/CustomAnimationTest举办了一个例子。 在8.4和9.1上运行它显示了不同之处,但是你很可能会尝试任何其他的8.x和9.x版本。 运行在Xcode 7,Swift 2.0上。