Ios Swift预加载视图控制器在其前面';有什么节目吗?
我有一个Ios Swift预加载视图控制器在其前面';有什么节目吗?,ios,objective-c,swift,uiscrollview,Ios,Objective C,Swift,Uiscrollview,我有一个viewController,它将一组图片加载到滚动视图中。当您第一次输入时,加载会花费一些时间,因此会减慢UI的速度。我正在努力找到解决问题的最佳方法。也许我应该一次只加载一定数量的图像,但我想我可以在上一个视图控制器中显示之前加载它 以下是myviewController中需要很长时间才能加载的函数: func loadImages() { var documentPath = NSSearchPathForDirectoriesInDomains(.Document
viewController
,它将一组图片加载到滚动视图中。当您第一次输入时,加载会花费一些时间,因此会减慢UI的速度。我正在努力找到解决问题的最佳方法。也许我应该一次只加载一定数量的图像,但我想我可以在上一个视图控制器中显示之前加载它
以下是myviewController
中需要很长时间才能加载的函数:
func loadImages() {
var documentPath = NSSearchPathForDirectoriesInDomains(.DocumentDirectory, .UserDomainMask, true)[0] as NSString
var files: NSArray = NSFileManager.defaultManager().contentsOfDirectoryAtPath(documentPath, error: nil)!
var currentX: CGFloat = 0.0
for image in files {
var im : NSString = image as NSString
var imagePath = documentPath.stringByAppendingPathComponent(im)
var image = UIImage(contentsOfFile: imagePath)
var imageView = UIImageView(image: image)
var rect = imageView.frame
rect.origin.x = currentX
imageView.frame = rect
// imageView.contentMode = .ScaleAspectFill
imageView.frame.size.width = UIScreen.mainScreen().bounds.width
imageView.frame.size.height = UIScreen.mainScreen().bounds.height
currentX += imageView.frame.size.width
self.scrollView.addSubview(imageView)
}
// currentX += UIScreen.mainScreen().bounds.width
self.scrollView.contentSize = CGSizeMake(currentX, self.scrollView.frame.size.height)
self.scrollView.autoresizingMask = UIViewAutoresizing.FlexibleWidth | UIViewAutoresizing.FlexibleLeftMargin | UIViewAutoresizing.FlexibleRightMargin
}
在上一个视图控制器中,我尝试执行以下操作:
var imageView = ImagesViewController().view
但这似乎不行。我得到:致命错误:在展开可选值时意外发现nil
有什么办法吗?或者你会推荐另一种解决方案
谢谢。在init()内调用loadImages()或任何您正在使用的自定义初始值设定项。我认为您的问题不在UI中。在哪里调用loadImage方法?(最好不要在主队列中加载图像)为了更快地处理图像,您可以解压缩它们
UIGraphicsBeginImageContextWithOptions(CGSizeMake(1, 1), NO, 0);
[image drawInRect:CGRectMake(0, 0, 1, 1)];
UIGraphicsEndImageContext();
你可以使用带有单元格的集合视图来显示图像。我在viewDidLoad中调用它。。我是否应该在后台任务中执行此操作?这是更改UI的正确位置。如果你有很多有理由的图片。为什么不使用UICollectionView?