Tag: 快速

调整UIImage大小时发生内存泄漏

我已经阅读了关于这个主题的多个主题,但是我的问题依然存在。 当我使用以下代码调整图像大小时: extension UIImage { func thumbnailWithMaxSize(image:UIImage, maxSize: CGFloat) -> UIImage { let width = image.size.width let height = image.size.height var sizeX: CGFloat = 0 var sizeY: CGFloat = 0 if width > height { sizeX = maxSize sizeY = maxSize * height/width } else { sizeY = maxSize sizeX = maxSize * width/height } […]

如何实现DeepLinking如果用户没有应用程序呢?

我有3个需求DeepLinking或通用链接到我的项目。 如果用户有应用程序,则UR​​L应该redirect到包含内容的应用程序。 如果用户没有应用程序,那么它应该redirect到Appstore。 如果用户没有应用程序,那么它应该redirect到Appstore,下载应用程序后,它应该与我正在用URL发送的数据去那个页面。 我遵循的链接: https://www.raywenderlich.com/128948/universal-links-make-connection https://developer.apple.com/library/content/documentation/General/Conceptual/AppSearch/UniversalLinks.html 。 http://swiftdeveloperblog.com/deep-linking-using-custom-url-scheme/ 。 http://blogs.innovationm.com/deferred-deep-linking-in-ios-with-universal-link/ https://developer.apple.com/documentation/security/shared_web_credentials/preparing_your_app_and_website_to_share http://www.brianjcoleman.com/tutorial-deep-linking-in-swift/ 。 我所理解的是: 创build和上传关联文件,为此我必须遵循一些步骤: 增加对通用链接的支持是很容易的。 有三个步骤你需要采取: 创build一个apple-app-site-association文件,其中包含有关您的应用可以处理的URL的JSON数据。 将apple-app-site-associationfile upload到您的HTTPS Web服务器。 您可以将该文件放在服务器的根目录或.well-known子目录中。 准备您的应用程序来处理通用链接。 创build和上传关联文件 要在您的网站和您的应用程序之间build立安全连接,您需要在它们之间build立信任关系。 你build立这种关系分为两部分: 您添加到网站的Apple-app-site-association文件添加到您的应用的com.apple.developer.associated-domains权利 准备您的应用程序来处理通用链接。 在您的com.apple.developer.associated-domains权利中,包含应用程序想要作为通用链接处理的域列表。 要在Xcode中执行此操作,请打开Capabilities选项卡中的Associated Domains部分,并为您的应用支持的每个域添加一个条目,并以applinks为前缀,如applinks:www.mywebsite.com。 问题是:我遵循所有步骤,我有一个url,我把它添加到我的关联域的域中。 例如: https://<My_Domain>/anything 。 现在后端正在生成URL和发送。 我们正在使用Http服务器。 例: Route::get('appstore',function(){ return redirect()->away('https://itunes.apple.com/in/app/whatsapp-messenger/id310633997?mt=8');}); 问题是当我点击那个URL我没有得到任何popup已经应用程序,也下载后,我将得到的数据? 我错过了什么或后端缺less的东西?

在UISplitViewController的细节视图中缺less标题栏

我有一个UISplitViewControllerembedded在一个容器视图(因为它不是在我的应用程序的根源),除了一个问题,它的机制工作很好: 在iPad上的细节视图的导航栏丢失。 初始设置基本如下: 在IB中,将分割视图控制器拖到故事板上,该分割视图控制器将创build一个分割视图控制器,一个导航控制器,一个表视图控制器(主控),一个基本的视图控制器(细节)以及连接它们的连接点。 使用容器视图添加常规视图控制器。 创build一个从容器视图到分割视图控制器的embedded塞格。 从原型单元添加另一个Segue到详细视图控制器,由主控制器中的以下代码支持: override func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) { self.performSegue(withIdentifier: "showDetail", sender: nil) } override func prepare(for segue: UIStoryboardSegue, sender: Any?) { if segue.identifier == "showDetail" { let destinationViewController = segue.destination as! DetailViewController let path = self.tableView.indexPathForSelectedRow! as NSIndexPath destinationViewController.selectedTrainingId = (self.itemList[path.row] as! MyListItem).id } } 添加数据。 将项目加载到主视图中并select细节正在工作。 […]

SceneKit视图呈现向后

我正在尝试我的第一个SceneKit应用程序。 我的目标是模拟地球表面的视图,并能够将设备的摄像机指向任意方向,并在摄像机视图上叠加信息。 首先,我只是试图让SceneKit相机视图匹配设备的方向。 为了validation它是否正常工作,我在特定的经度和纬度坐标处添加了一堆球体。 除了一个重要的问题,一切都在起作用。 该视图从应该显示的内容镜像左/右(东/西)。 我花了几个小时尝试调整相机的不同排列。 以下是我的完整testing应用程序视图控制器 我无法弄清楚正确的变化组合,让场景正确渲染。 北极的球体是正确的。 按我自己目前的经度从北极延伸到赤道的球体线如预期的那样出现在头顶上。 这是领域的其他线是不正确的。 它们从东西向镜像,就像镜子在我自己的经度上一样。 如果你想testing这个代码,使用SceneKit创build一个新的游戏项目。 将模板GameViewController.swiftreplace为下面的文件。 您还需要在Info.plist中添加“隐私 – 使用说明中的位置”键。 我也build议调整for lon in …行中的for lon in …以便数字以您自己的经度开始或结束。 然后您可以看到球体是否正在显示的正确部分上绘制。 这可能还需要对UIColor(hue: CGFloat(lon + 104) * 2 / 255.0颜色UIColor(hue: CGFloat(lon + 104) * 2 / 255.0 。 import UIKit import QuartzCore import SceneKit import CoreLocation import CoreMotion let EARTH_RADIUS = […]

使用照片构buildSQLite数据库

我打算在UICollectionView控制器中显示用户从DetailViewController收集的图像。 我想使用一个SQLite数据库,但我不确定如何启动它,看到我已经有大部分的应用程序build立和build立。 下面看到我的DetailViewController(图像收集和显示),ImageStore.swift(图像当前正在存储)和UICollectionView控制器。 ImageStore.swift: class ImageStore: NSObject { let cache = NSCache() func setImage(image: UIImage, forKey key: String) { cache.setObject(image, forKey: key) let imageURL = imageURLForKey(key) if let data = UIImageJPEGRepresentation(image, 0.5) { data.writeToURL(imageURL, atomically: true) } } func imageForKey(key: String) -> UIImage? { if let existingImage = cache.objectForKey(key) as? UIImage { return existingImage } […]

用Alamofire下载后如何得到部分文件path?

我想保存下载文件到我的模型对象的path。 基于这个StackOverflow的答案 ,我应该“只存储文件名,然后结合它的文档目录的位置在飞行”。 那么在我的情况下,这是应用程序支持目录。 我不知道如何做到这一点。 下载文件的完整path是: /Library/ApplicationSupport/com.Company.DemoApp/MainFolder/myFile.jpg /Library/Application Support/是我无法保存在任何地方的部分,我必须在运行时从FileManager获取它。 com.Company.DemoApp/MainFolder/myFile.jpg是我可以存储在数据库/configuration文件中的文件path的一部分。 但是我不知道如何从Alamofire下载它后得到这个path: com.Company.DemoApp/MainFolder/myFile.jpg 。 例如,这里是下载文件的代码,我如何得到这个path? func destination(named name: String, pathExtension: String) -> DownloadRequest.DownloadFileDestination { let destination: DownloadRequest.DownloadFileDestination = { _, _ in let appSupportDirURL = FileManager.createOrFindApplicationSupportDirectory() let fileURL = appSupportDirURL?.appendingPathComponent("com.Company.DemoApp/MainFolder/\(name).\(pathExtension)") return (fileURL!, [.removePreviousFile, .createIntermediateDirectories]) } return destination } let finalDestination = destination(named: image.title, pathExtension: image.preview.pathExtension) Alamofire.download(urlString, […]

我如何在我的CocoaTouchFramework和我的应用程序中使用第三方框架?

我正在开发一个iOS应用程序和一个CocoaTouchFramework。 iOS应用程序依赖于框架。 我的目标是在我的CocoaTouchFramework中使用第三方框架(在这里是AlamoFire)。 根据这个堆栈溢出链接 ,不build议有一个框架embedded另一个框架。 我理解的方式是消费iOS应用程序(依赖于框架的应用程序)需要提供第三方依赖关系,并且我的框架可以引用该依赖关系。 但是我不知道如何在Xcode中设置它。 这是我目前在Xcode中设置的内容: AlamoFireApp是实际的应用程序和AlamoFramework是我自己的框架,将使用AlamoFire执行各种networking请求。 我将AlamoFire依赖项embedded到应用程序中。 我现在如何在框架中使用AlamoFire? 我尝试链接到AlamoFire框架(添加Alamofire.framework)在链接二进制与库部分),但我总是得到没有这样的模块“AlamoFire”错误,当我尝试在我的框架的类中导入AlamoFire。 任何帮助表示赞赏。

如何在xcode 7.3.1中使用iOS 10 UserNotifications框架swift 2.2?

有没有办法在Swift 2.x版本的Xcode 7.x中导入iOS 10的用户通知?

Swift 3 Firebase更新代码转换 – sorting

我之前在Udemy注册过一门课程,关于如何使用Swift和Firebase创build一个聊天应用程序,仅仅是因为我想了解一切是如何工作的。 不过,我一周后完成了课程。 这是几个月前,从那以后 – 对Firebase和Swift进行了更新,目前我正在努力将一些旧代码转换为新代码。 这是我目前正在努力的代码: func loadRecents() { firebase.child("Recent").queryOrdered(byChild: "userId").queryEqual(toValue: FIRAuth.auth()!.currentUser?.uid).observe(.value) { (snapshot:FIRDataSnapshot) in self.recents.removeAll() if snapshot.exists() { if let values = snapshot.value as? [String:AnyObject] { let sorted = (values as! NSArray).sortedArray(using: [NSSortDescriptor(key: "date", ascending: false)]) for recent in sorted { self.recents.append(recent as! NSDictionary) self.conversationTableView.reloadData() } } self.conversationTableView.reloadData() } self.conversationTableView.reloadData() } self.checkUnread() } 所以这只是在tableView中显示所有“聊天”的代码,我只是通过Date对其进行sorting,其中升序是错误的。 […]

调用API客户端的networking请求的通用方法

我已经提供了我的firebase API客户端的代码。 使用generics,使用json直接初始化任何实体是否聪明? 要下载列表,我需要一个指示器让我知道,我正在请求一个实体列表 – 因为有不同的实现,所以我添加了一个GETALL的情况下,我的HTTPMethod枚举,这是不好的,和一些会混淆到其他? 我也觉得这是不灵活的,因为如果嵌套在不同的层次上,我不能得到所需的实体。 希望这是有道理的。 因此,这可能不遵循开放/封闭的原则,因为如果我必须将我的实体嵌套在Firebase中,则不同的是,必须再次更改FirebaseAPI内的实现。 从我见过的开源代码中,我还没有看到像这样devise的rest客户端,也不知道我是否使用了反模式。 任何帮助或指导,使这个维护。 class FirebaseAPI { private let session: URLSession init() { self.session = URLSession.shared } /// Responsible for Making actual API requests & Handling response /// Returns an observable object that conforms to JSONable protocol. /// Entities that confrom to JSONable just means they can be […]