- Java 双重比较
- java - 比较器与 Apache BeanComparator
- Objective-C 完成 block 导致额外的方法调用?
- database - RESTful URI 是否应该公开数据库主键?
我正在尝试使用 UICollectionView
和 Swift 制作照片库。我想全屏显示照片并向右滑动以获取下一张图片。我有一个肖像框的工作代码,但是一旦我转到风景,我的单元格似乎没有重新调整到正确的位置和大小。
意味着它保持与纵向屏幕相同的宽度
、高度
、x position
和y position
每时每刻。我在纵向和横向框架上也遇到此错误:
->未定义 UICollectionViewFlowLayout 的行为,因为:
->项目高度必须小于 UICollectionView 的高度减去部分插入的顶部和底部值。
我在网上寻找答案并尝试了所有可能的解决方案,但它似乎对我不起作用。让我知道是否有人可以帮助解决这个问题。非常感谢。
这是我的代码:
import UIKit
class ImageDetailViewController: UIViewController, UICollectionViewDelegate, UICollectionViewDataSource, UICollectionViewDelegateFlowLayout,UINavigationControllerDelegate {
@IBOutlet weak var imgDetailCollectionView: UICollectionView!
var index: Int!
var imageItems: Array<Items> = []
var currentIndex: CGFloat!
var size = UIScreen.mainScreen().bounds.size
init(index: Int , imageItems: Array<Items>) {
self.index = index
self.imageItems = imageItems
super.init(nibName: "ImageDetailViewController", bundle: NSBundle.mainBundle())
}
required init(coder aDecoder: NSCoder) {
fatalError("init(coder:) has not been implemented")
}
override func viewDidLoad() {
super.viewDidLoad()
imgDetailCollectionView.registerNib(UINib(nibName: "ImageDetailCollectionViewCell", bundle: nil), forCellWithReuseIdentifier: "ImageDetailCollectionViewCell")
//self.automaticallyAdjustsScrollViewInsets = false
imgDetailCollectionView.setZoomScale(0.5, animated: true)
}
override func viewDidLayoutSubviews() {
imgDetailCollectionView.scrollRectToVisible(CGRectMake(320 * CGFloat(index), 0, 320 , 240), animated: false)
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
// Dispose of any resources that can be recreated.
}
func collectionView(collectionView: UICollectionView, numberOfItemsInSection section: Int) -> Int{
return self.imageItems.count
}
func collectionView(collectionView: UICollectionView, cellForItemAtIndexPath indexPath: NSIndexPath) -> UICollectionViewCell{
var cell = imgDetailCollectionView.dequeueReusableCellWithReuseIdentifier("ImageDetailCollectionViewCell", forIndexPath: indexPath) as ImageDetailCollectionViewCell
cell.setup(imageItems[indexPath.row].url!)
if(UIDeviceOrientationIsPortrait(UIDevice.currentDevice().orientation)){
self.imgDetailCollectionView.collectionViewLayout.invalidateLayout()
var frame = cell.frame
frame.size = CGSizeMake(size.width, size.height)
cell.frame = frame
}else{
self.imgDetailCollectionView.collectionViewLayout.invalidateLayout()
var frame = cell.frame
frame.size = CGSizeMake(size.height, size.width)
cell.frame = frame
}
return cell
}
func collectionView(collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, sizeForItemAtIndexPath indexPath: NSIndexPath) -> CGSize {
var size = UIScreen.mainScreen().bounds.size
if(UIDeviceOrientationIsPortrait(UIDevice.currentDevice().orientation)){
return CGSizeMake(size.width, size.height)
}else{
return CGSizeMake(size.height, size.width)
}
}
func collectionView(collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, minimumLineSpacingForSectionAtIndex section: Int) -> CGFloat {
return 0
}
func collectionView(collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, minimumInteritemSpacingForSectionAtIndex section: Int) -> CGFloat {
return 0
}
override func willRotateToInterfaceOrientation(toInterfaceOrientation: UIInterfaceOrientation, duration: NSTimeInterval) {
self.imgDetailCollectionView.collectionViewLayout.invalidateLayout()
var currentOffset = self.imgDetailCollectionView.contentOffset
self.currentIndex = currentOffset.x / imgDetailCollectionView.frame.size.width
}
override func didRotateFromInterfaceOrientation(fromInterfaceOrientation: UIInterfaceOrientation) {
var currentSize = imgDetailCollectionView.bounds.size
var offset = self.currentIndex * currentSize.width
imgDetailCollectionView.setContentOffset(CGPointMake(offset, 0), animated: false)
imgDetailCollectionView.reloadData()
}
override func willAnimateRotationToInterfaceOrientation(toInterfaceOrientation: UIInterfaceOrientation, duration: NSTimeInterval) {
self.imgDetailCollectionView.collectionViewLayout.invalidateLayout()
}
}
最佳答案
您的问题是您正在检查方向并在横向模式下使用高度作为宽度。这是不正确的。当设备旋转时,width 属性将返回设备纵向时的实际高度。
func collectionView(collectionView: UICollectionView, cellForItemAtIndexPath indexPath: NSIndexPath) -> UICollectionViewCell {
var cell = imgDetailCollectionView.dequeueReusableCellWithReuseIdentifier("ImageDetailCollectionViewCell", forIndexPath: indexPath) as ImageDetailCollectionViewCell
cell.setup(imageItems[indexPath.row].url!)
cell.frame.size = view.frame.size
return cell
}
func collectionView(collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, sizeForItemAtIndexPath indexPath: NSIndexPath) -> CGSize {
return CGSizeMake(view.frame.width, view.frame.height)
}
另外注意,苹果建议您使用 viewWillTransitionToSize(size: CGSize, withTransitionCoordinator coordinator: UIViewControllerTransitionCoordinator)
方法,因为这是较新的 API。此外,在 iOS9 中,如果您改用此方法,您将通过使用此方法启用多任务处理功能。
关于ios - UICollectionView 水平滚动照片库与 swift,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27852090/
随机问题,...但是有人知道这里使用的是什么照片 slider 吗? http://www.rolandgarros.com/en_FR/index.html 或这里: http://www.theg
我正在制作一个 JS 脚本,它将进入标题 div 并显示一些图片。我查看了 JQuery Cycle,但它超出了我的范围。我在下面编写的代码卡住了浏览器,我应该使用带有计时器变量的 for 循环吗?
我在四处寻找,因为我在 PHP 文件上传方面遇到了一些问题!如果用户想要或显示已存储在数据库中的照片,我正在尝试将一张或三张照片上传到数据库(admin_images)。我遇到了一些问题,下面是我目前
如何提高相机质量?我想拍一张全屏显示的照片/视频吗?如果我将 session 预设设置为 AVCaptureSessionPresetPhoto,它是高质量和全屏的,但仅适用于照片而不适用于视频。我已
我还没有看到有人问过这个问题,所以我问一下如何在iOS应用程序(Xcode)中通过WIFI传输信息/图像。 例如:如果我正在用带WIFI的相机翻阅图片,我如何去iPhone看图片? 例如像这个视频:
有没有人有关于如何将照片和图像(位图)转换为类似草图的图片的想法、链接、库、源代码...?我找不到任何关于如何做到这一点的好消息来源。 我找到了这个链接 How to cartoon-ify an i
假设我有一个 Instagram 帐户和一个网站。我想在网站上显示来自我的 Instagram 帐户的最新照片。我在文档中不清楚的东西:为了得到我的 access_token我需要验证自己的身份吗?我
我只想从 Flickr 获取风景照片,但我没有看到任何允许我这样做的参数。有谁知道有没有办法? 最佳答案 在来自 flickr.photos.search 的回复中功能,您可以指定许多可选参数,称为
关闭。这个问题不满足Stack Overflow guidelines .它目前不接受答案。 想改善这个问题吗?更新问题,使其成为 on-topic对于堆栈溢出。 3年前关闭。 Improve thi
Instagram 会提供任何方式通过 API 获取人像/风景吗? API 文档看起来未受影响。 截至目前,他们仍然返回纵向图像的正方形大小,但 api 文档没有提供任何获取原始图像的方法。 他们会继
我知道您可以将限制和偏移值附加到 graph.facebook.com/id/photos API 调用中以对照片进行分页。但大的限制似乎效果不佳,照片最终会丢失。我在这里读到 limit=0 为您提
我是 Instagram 新手,我的任务是编写一个应用程序来根据特定主题标签抓取 Instagram 照片上传。这意味着如果应用程序启动并搜索主题标签“#awesomeevent”,任何上传带有该主题
苹果的照片应用程序允许用户使用“冲浪”、“食物”、“天空”等搜索关键字查询照片。 具有相机和照片权限的第三方 iOS 应用程序如何使用任意字符串搜索手机的相机胶卷? Searching for Pho
如何避免照片拉伸(stretch)? PHP 从文件夹中随机选择 2 张照片并使用 echo 显示它们。但是现在,所有纵向照片都被拉伸(stretch)了。 "; unset($images[
我正在构建一个处理以人像模式(深度效果)拍摄的图像的应用程序。我需要提供UIImagePickerController以仅显示具有深度效果的照片。 我该如何实现? 最佳答案 使用UIImagePick
通过编程从iOS照片库获取最新照片是否有技巧? 我知道我可以按日期搜索,但是我必须每隔一微秒进行一次扫描,以便进行某种比较以准确地找到它。 有没有人做过这个或任何想法? 最佳答案 我之前采取的一种方法
我在尝试使用 Facebook 的 Javascript API 时遇到严重问题。我目前有一个有点功能的 facebook 登录,我希望能够从当前用户那里获取所有照片,并将它们显示在 strip 中。
我正在尝试查询 FlickR 照片并接收 JSON 响应。我正在使用 Retrofit 调用 FlickR API。在我的代码中,用户输入文本,这是通过 EditText 捕获的。我想根据这个词查询。
我想为使用像应用程序这样的相机捕获的对象创建 3d View (360 度 View )Fyuse或 Phogy正在做。我对此进行了研究,但没有发现有用的东西。 我有一些问题,例如: 为此我应该使用什
当我从 iPhone 导入图片时,它们最终都在一个巨大的文件列表中:IMG_4649.JPG、IMG_4650.JPG、IMG_4651.PNG , …有自己拍的, friend 给的,下载的,截图的
我是一名优秀的程序员,十分优秀!