Tag: 性能

使用UITextView属性在Swift中自定义UIView的加载时间较慢

我最初问这个问题 。 我曾经假设,我的自定义视图的加载时间很慢的原因是因为将多个视图层叠在一起,或者可能是由于某种recursion问题 。 但是,在截取越来越多的代码之后,看看有什么不同之处,最后是我是否有UITextView存在。 由于我的问题的明显根源与我在第一个问题中所期待的完全不同,因此我决定提出一个新的问题,而不是对旧问题进行冗长的更新。 我用两个视图控制器设置我的testing项目。 第一个视图控制器上的一个button调用show segue到第二个视图控制器。 第二个视图控制器上有我的自定义视图。 (使用第二个视图控制器让我了解加载自定义视图需要多长时间。) 自定义查看代码: import UIKit @IBDesignable class UIMongolTextView: UIView { var textView = UITextView() // key line required init?(coder aDecoder: NSCoder) { super.init(coder: aDecoder) } override init(frame: CGRect){ super.init(frame: frame) } } 正如你所看到的,与UIView的唯一区别是我添加了一个UITextView属性。 这是自定义视图加载非常缓慢。 在仪器中运行分配工具我得到以下结果(计数为997): 但是,如果我注释掉这一行 //var textView = UITextView() 那么我自定义视图加载速度非常快,只有7的计数。 这里发生了什么? 是否有可能在自定义视图中使用UITextView属性,并避免这种缓慢的加载时间?

有没有办法以编程方式检测iOS 9的低功耗模式?

我知道用户可以通过观察电池图标的颜色来检测低功耗模式,但是有没有API调用允许程序检测低功耗模式?

iOS – 这是更好的select把图像? 核心graphics(PaintCode应用程序)与图像文件(PNG)

我正在开发一个iOS应用程序,使用相当多的图像。 我有点困惑如何加载应用程序中的图像。 大约在五年前,有人提出了类似的问题 。 但是从那以后很多改变了。 所以我想,开始一个新的线程会更有意义。 主要有两个选项,我想我有: 使用PaintCode应用程序(你可以在这里find它),它给你CG代码在运行时绘制图像。 把.png图像文件(1倍,2倍,3倍) 关于第一个选项的事情是: • The first most important and unbeatable feature: Draw dynamic images ie to be able to change the content and gives basic animation effects using variables and equations • The second most important thing: parametric images that behaves perfectly when frame changes no stretching or […]

我怎样才能使iOS上的tesseract更快?

我正在苦苦挣扎在ios上的tesseract ocr。 一切正常,但它真的很慢。 2 – 3秒识别一行数字的时间。 我正在阅读videostream。 我正在使用tesseract 3.01与我的字体的自定义培训文件。 这是我做的: 设置tesseract仅查找数字(0-9) 收缩,歪斜和二值化图像 使用GetLinesfind我想要的文本行 setRectangle只识别我想要的行 getUTF8Text获取我的文本< – 这需要2-3秒 有什么build议可以加快这个过程吗?

故事板中的视图太多 – Xcode运行缓慢

我正在帮助某人使用xcode项目,但这几乎是不可能的。 他们在故事板上有大约100个视图控制器,而且运行速度非常慢。 我已经遵循了使Xcode更快的所有指南,但对这种情况并没有帮助。 在故事板之外,当我们在.h和.m文件中工作时,它运行的很好,只是在故事板内运行缓慢。 有没有人有这样的项目的经验? 你做了什么? 或者我能做些什么才能在故事板上工作? 谢谢

如何从Swift中的图像arrays高效地创build多行照片拼贴

问题 我正在build立一个从我放置到桌面视图的图像arrays的照片拼贴。 当图像的数量达到tableview单元格宽度的边界时(这将允许我显示拼贴中的图像行),我想要使图像换行。 目前我得到一个单一的行。 如果需要更多信息,请随时通知我们。 我最有可能不会以最有效的方式来处理这个问题,因为在arrays中使用的图像数量开始增加时会有延迟。 (对此的任何反馈将非常感激)。 Nota Bene 我正在创build一个拼贴图片。 它实际上是一个图像。 我想通过在内存中创build一个高效的列和行matrix来安排拼贴。 然后我用图像填充这些反义词。 最后,我快照生成的图像,并在需要时使用它。 该algorithm效率不如书面,只产生一行图像。 我需要一个轻量级的替代下面使用的algorithm。 我不相信在这种情况下,UICollectionView将是一个有用的替代scheme。 伪代码 给定一组图像和一个目标矩形(代表目标视图) 获取数组中的图像数量与每行允许的最大数量 定义一个适当大小的小矩形来容纳图像(以便每行填充目标矩形,即 – 如果一个图像应该填充该行;如果9个图像则应该完全填充该行;如果具有最大值的10个图像每行9个图像,然后从第10行开始第二行) 迭代收集 将每个矩形从左到右放置在正确的位置,直到达到最后一个图像或每行的最大数量; 继续下一行,直到所有的图像适合目标矩形 当达到每行最大数量的图像时,放置图像并设置下一个矩形出现在连续的行上 使用:Swift 2.0 class func collageImage (rect:CGRect, images:[UIImage]) -> UIImage { let maxSide = max(rect.width / CGFloat(images.count), rect.height / CGFloat(images.count)) UIGraphicsBeginImageContextWithOptions(rect.size, false, UIScreen.mainScreen().scale) var xtransform:CGFloat = 0.0 for img […]

我们应该使用哪一个CGImageAlphaInfo?

Quartz 2D编程指南定义了各种alpha存储模式的可用性: 我们应该使用哪些RGB上下文, 为什么 ? 对于不透明的上下文, kCGImageAlphaPremultipliedFirst或kCGImageAlphaPremultipliedLast ? 对于不透明的上下文, kCGImageAlphaNoneSkipFirst或kCGImageAlphaNoneSkipLast ? 价值的select是否影响绩效? 通常,我看到kCGImageAlphaPremultipliedFirst用于不透明,而kCGImageAlphaNoneSkipFirst用于不透明的上下文。 有些人表示这些performance更好,但我还没有看到有关这方面的任何确凿的证据或文件。 快速的GitHubsearch显示,开发者倾向于通过kCGImageAlphaPremultipliedFirst在kCGImageAlphaPremultipliedLast和kCGImageAlphaNoneSkipLast上执行kCGImageAlphaNoneSkipFirst 。 可悲的是,这仅仅是一个轶事证据。

如何计算我们的汽车使用iPhone的速度

对于我的应用程序,我想用iPhone计算我的车/自行车速度。 我怎样才能做到这一点? 理想情况下,它应该在后台连续运行。

用普通CALayer显示图像或UIImage

我经常读到,使用CALayer而不是UIImageView是一个性能提升,当涉及到沉重的图像使用。 这是有道理的,因为UIImageView导致内存中的3个副本,这是核心animation所需要的。 但在我的情况下,我不使用核心animation。 如何将UIImage (或其图像数据)分配给CALayer ,然后显示它?

UITableViewCell与AutoLayout性能不佳

我有点卡住了这个…任何帮助,非常感激。 我已经花了很多时间来debugging。 我已经得到了由NSFetchedResultsController提供的数据源的UITableView 。 在单独的视图控制器中,我使用[NSEntityDescription insertNewObjectForEntityForName:inManagedObjectContext:]向CoreData插入新logging,保存托pipe对象上下文并closures该控制器。 非常标准的东西。 被pipe理的对象上下文的变化然后由NSFetchedResultsController接收: – (void)controllerWillChangeContent:(NSFetchedResultsController *)controller { [self.tableView beginUpdates]; } – (void)controllerDidChangeContent:(NSFetchedResultsController *)controller { [self.tableView endUpdates]; } – (void)controller:(NSFetchedResultsController *)controller didChangeObject:(id)anObject atIndexPath:(NSIndexPath *)indexPath forChangeType:(NSFetchedResultsChangeType)type newIndexPath:(NSIndexPath *)newIndexPath { switch (type) { case NSFetchedResultsChangeInsert: [self.tableView insertRowsAtIndexPaths:@[newIndexPath] withRowAnimation:UITableViewRowAnimationNone]; break; case NSFetchedResultsChangeDelete: [self.tableView deleteRowsAtIndexPaths:@[indexPath] withRowAnimation:UITableViewRowAnimationNone]; break; case NSFetchedResultsChangeUpdate: [self.tableView reloadRowsAtIndexPaths:@[indexPath] withRowAnimation:UITableViewRowAnimationNone]; break; case NSFetchedResultsChangeMove: […]