我知道 iOS 11 为 collectionview 带来了新的拖放功能,但我在使用它时遇到了一个完全不同的问题。所以我想我会尝试使用 IOS 9 中引入的旧方法 ( see this link )。我的问题是,在 iOS 11 上,当你的手指被移开时结束动画只有在两个单元格切换时才会表现得很奇怪。您可以在这个 clip 中看到问题.
几天来我一直在努力解决这个问题,但没有成功。它在 iOS 10 上运行良好,但在 iOS 11 上运行不佳。我们将不胜感激。
额外信息:我正在使用带有长按手势的 Collection View 来启动重新排序手势,如第一个链接所示。但是,使用 uicollectionviewcontroller 时仍然出现问题
这是长按手势的代码:
func handleLongGesture(gesture: UILongPressGestureRecognizer) {
switch(gesture.state) {
case .began:
guard let selectedIndexPath = self.collectionView.indexPathForItem(at: gesture.location(in: self.collectionView)) else {
break
}
collectionView.beginInteractiveMovementForItem(at: selectedIndexPath)
case .changed:
collectionView.updateInteractiveMovementTargetPosition(gesture.location(in: gesture.view!))
case .ended:
// this part misbehaves on ios 11 when two cells are swapped
collectionView.performBatchUpdates({
self.collectionView.endInteractiveMovement()
)}
default:
collectionView.cancelInteractiveMovement()
}
}
最佳答案
首先,您不需要将 collectionView.endInteractiveMovement() 放在 performBatchUpdates block 中。但是尽管如此,这个问题也一直困扰着我。 iOS 10 和 11 与此 endInteractiveMovement 之间的差异没有多大意义。
对于我的问题,我在我的 collectionView 上方放置了一个假的快照单元格,并在我运行手势状态更改和 updateInteractiveMovementTargetPosition 时隐藏下面的内容。一旦手势状态已.ended,我是从 super View 中删除假单元格,然后执行endInteractiveMovement。但是现在使用 iOS 11,我在上一个答案的评论中遇到了与@prolfe 相同的问题。由于有问题的单元格意外重新加载,我得到了这个奇怪的闪光。
我最终采用的解决方案是延迟移除假细胞,这样它就可以“掩盖”闪光。
我的 pushBackView 方法将伪造的单元格动画化回放置位置,然后移除伪造的单元格。然后我执行延迟:
case .ended:
fakeCellView?.pushBackView { [weak self] in // 'suppress' cell animation
DispatchQueue.main.asyncAfter(deadline: .seconds(0.01), execute: {
self?.fakeCellView?.removeFromSuperview()
})
self?.collectionView?.endInteractiveMovement()
}
希望这对您有所帮助!
关于ios - 重新排序 CollectionView 单元格 iOS 11,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46017959/
鉴于我有以下迁移:Sequel.migrationdoupdoalter_table:usersdoadd_column:is_admin,:default=>falseend#SequelrunsaDESCRIBEtablestatement,whenthemodelisloaded.#Atthispoint,itdoesnotknowthatusershaveais_adminflag.#Soitfails.@user=User.find(:email=>"admin@fancy-startup.example")@user.is_admin=true@user.save!ende
我正在使用active_admin,我在Rails3应用程序的应用程序中有一个目录管理,其中包含模型和页面的声明。时不时地我也有一个类,当那个类有一个常量时,就像这样:classFooBAR="bar"end然后,我在每个必须在我的Rails应用程序中重新加载一些代码的请求中收到此警告:/Users/pupeno/helloworld/app/admin/billing.rb:12:warning:alreadyinitializedconstantBAR知道发生了什么以及如何避免这些警告吗? 最佳答案 在纯Ruby中:classA
这里有一个很好的答案解释了如何在Ruby中下载文件而不将其加载到内存中:https://stackoverflow.com/a/29743394/4852737require'open-uri'download=open('http://example.com/image.png')IO.copy_stream(download,'~/image.png')我如何验证下载文件的IO.copy_stream调用是否真的成功——这意味着下载的文件与我打算下载的文件完全相同,而不是下载一半的损坏文件?documentation说IO.copy_stream返回它复制的字节数,但是当我还没有下
我正在尝试解析一个文本文件,该文件每行包含可变数量的单词和数字,如下所示:foo4.500bar3.001.33foobar如何读取由空格而不是换行符分隔的文件?有什么方法可以设置File("file.txt").foreach方法以使用空格而不是换行符作为分隔符? 最佳答案 接受的答案将slurp文件,这可能是大文本文件的问题。更好的解决方案是IO.foreach.它是惯用的,将按字符流式传输文件:File.foreach(filename,""){|string|putsstring}包含“thisisanexample”结果的
我早就知道Ruby中的“常量”(即大写的变量名)不是真正常量。与其他编程语言一样,对对象的引用是唯一存储在变量/常量中的东西。(侧边栏:Ruby确实具有“卡住”引用对象不被修改的功能,据我所知,许多其他语言都没有提供这种功能。)所以这是我的问题:当您将一个值重新分配给常量时,您会收到如下警告:>>FOO='bar'=>"bar">>FOO='baz'(irb):2:warning:alreadyinitializedconstantFOO=>"baz"有没有办法强制Ruby抛出异常而不是打印警告?很难弄清楚为什么有时会发生重新分配。 最佳答案
我正在尝试用Prawn生成PDF。在我的PDF模板中,我有带单元格的表格。在其中一个单元格中,我有一个电子邮件地址:cell_email=pdf.make_cell(:content=>booking.user_email,:border_width=>0)我想让电子邮件链接到“mailto”链接。我知道我可以这样链接:pdf.formatted_text([{:text=>booking.user_email,:link=>"mailto:#{booking.user_email}"}])但是将这两行组合起来(将格式化文本作为内容)不起作用:cell_email=pdf.make_c
运行bundleinstall后出现此错误:Gem::Package::FormatError:nometadatafoundin/Users/jeanosorio/.rvm/gems/ruby-1.9.3-p286/cache/libv8-3.11.8.13-x86_64-darwin-12.gemAnerroroccurredwhileinstallinglibv8(3.11.8.13),andBundlercannotcontinue.Makesurethat`geminstalllibv8-v'3.11.8.13'`succeedsbeforebundling.我试试gemin
1.错误信息:Errorresponsefromdaemon:Gethttps://registry-1.docker.io/v2/:net/http:requestcanceledwhilewaitingforconnection(Client.Timeoutexceededwhileawaitingheaders)或者:Errorresponsefromdaemon:Gethttps://registry-1.docker.io/v2/:net/http:TLShandshaketimeout2.报错原因:docker使用的镜像网址默认为国外,下载容易超时,需要修改成国内镜像地址(首先阿里
我对单元测试还是比较陌生。我用Ruby编写了一个类,它接受一个文件,在该文件中搜索给定的Regex模式,替换它,然后将更改保存回文件。我希望能够为此方法编写单元测试,但我不知道我将如何去做。有人能告诉我我们如何对处理文件i/o的方法进行单元测试吗? 最佳答案 看看这个HowdoIunit-testsavingfiletothedisk?基本上这个想法是一样的,文件系统是你的类的依赖。所以引入一个可以在你的单元测试中模拟的角色/接口(interface)(这样你在单元测试时就没有依赖性);角色中的方法应该是您从文件系统中需要的所有东西
我需要用任何语言编写一个算法,根据3个因素对数组进行排序。我以度假村为例(如Hipmunk)。假设我想去度假。我想要最便宜的地方、最好的评论和最多的景点。但是,显然我找不到在所有3个中都排名第一的方法。Example(assumingthereare20importantattractions):ResortA:$150/night...98/100infavorablereviews...18of20attractionsResortB:$99/night...85/100infavorablereviews...12of20attractionsResortC:$120/night