Tag: uicollectionview

在滚动时将部分插入到UICollectionView时的性能问题

基本上我使用默认的UICollectionViewFlowLayout 。 当我使用insertSections它需要一些时间。 特别是如果用户滚动这会带来一些口吃。 我正在使用自动布局,在我的自定义UICollectionViewCell上定位标签。 我正在出列单元格和补充视图(标题)。 这里没什么特别的 以下是时间分析器的截图: 你可以在这里看到的是, prepareLayout的UICollectionViewFlowLayout消耗了三分之一的可用CPU功率。 有没有可能加速呢? 例如,为layoutAttributesForElementsInRect: , layoutAttributesForItemAtIndexPath: , collectionViewContentSize , prepareLayout编写自定义方法? 这个方法怎么样? 我做的其他观察: 更多的部分添加更长的performBatchUpdates插入部分(约420项)。 每次添加相同数量的项目。 我用仪器做了一些testing。 当发生口吃时,CPU使用率超过100%。 真正的内存使用量正在增加,但我结束了约60 MB的testing。 当时大约有48000个细胞被加载到数据集中(大约45个始终在屏幕上)。 一旦这些单元格被加载,滚动工作就能stream利地进行(CPU最多100%,但只有很短的时间,用户不会注意到)。 在另一个testing中,总共分配的字节大约是1.6GB,但是持续的低。 如果插入了新的部分,框架也会下降到0。 我试图离开单元格的自动布局,为单元格使用不透明的背景颜色,使用剪辑来限制单元格,使用shouldRasterize等等。 单元格不重叠,不应使用小数值(舍入宽度)。 我根本不使用阴影。 我也试图评论事情,看看有什么错,但我认为这一定是必不可less的。 我在模拟器以及不同的设备上进行了testing。 有谁有线索如何提高插入部分时的性能?

UICollectionView clipsToBounds与分页无法正常工作

我正在使用水平分页启用UICollectionView。 我的collectionView框架小于屏幕尺寸。 我使用了下面的代码: myCollectionView.clipsToBounds=FALSE; 我仍然无法看到我的collectionView边界外的意见。 我正在使用自定义的UICollectionViewLayout

无法search数据?

我已经添加search栏收集视图使用编程方式。但是当我input名称search什么都不显示。我也有一些部分,每个部分包含一些数据。 这是我的代码: @interface ViewController () { NSMutableArray *arrayPDFName; NSMutableArray *titleArray; } @property (nonatomic,strong) NSArray *dataSourceForSearchResult; @property (nonatomic) BOOL searchBarActive; @property (nonatomic) float searchBarBoundsY; @property (nonatomic,strong) UISearchBar *searchBar; @property (nonatomic,strong) UIRefreshControl *refreshControl; @end @implementation ViewController – (void)viewDidLoad { [super viewDidLoad]; self.dataSourceForSearchResult = [NSArray new]; titleArray = [NSMutableArray array]; [self getdata]; self.mycollectionView.dataSource = self; self.mycollectionView.delegate = self; […]

UICollectionView单元大小ContentView问题

在单元格的故事板中有一个UICollectionViewCell。 前6个单元的单元大小为45个,最后一个单元的单元大小为50个。 故事板单元大小的宽度= 60。 在iOS模拟器4s上运行时,会发生以下问题。 如果您在位置2,4,6处看到单元格,则会出现UICollectionView的红色背景。 我在子类的layoutSubView中获得以下内容。 Frame = {{0, 0}, {50, 60}} Frame = {{0, 0}, {45, 60}} Frame = {{0, 0}, {45, 60}} Frame = {{0, 0}, {45, 60}} Frame = {{0, 0}, {45, 60}} Frame = {{0, 0}, {45, 60}} Frame = {{0, 0}, {45, 60}} – (void)layoutSubviews { [super layoutSubviews]; NSLog(@"Frame […]

为什么我的主视图控制器不能更新,当我继续?

我试图创build一个非常简单的应用程序。 你在feedViewController中,点击吧button图标(一个摄像头)。 它需要你到AddEditViewController。 在AddEditView控制器中,一旦你点击“保存”,你想添加一个数组,将显示在feedViewController中的图片,但我的图片不显示,直到我停止模拟器中的应用程序,并再次运行。 import UIKit import CoreData import MobileCoreServices class FeedViewController: UIViewController, UICollectionViewDataSource, UICollectionViewDelegate, UIImagePickerControllerDelegate, UINavigationControllerDelegate { @IBOutlet weak var collectionView: UICollectionView! var feedArray: [AnyObject] = [] let managedObjectContext = (UIApplication.sharedApplication().delegate as! AppDelegate).managedObjectContext override func viewDidLoad() { super.viewDidLoad() // Do any additional setup after loading the view. makeItLoad() } override func viewDidAppear(animated: Bool) { […]

在iOS中为本地应用内容创build一个画廊

我的应用程序需要一些video和图片,并将其存储在应用程序主页/文档文件夹中。 我想创build一个画廊,将打开并显示(和播放)这些项目。 我看着MPMediaPickerController,它看起来像数据源的唯一select是照片相册。 它看起来像我将不得不去创buildUICollectionView。 这是正确的方式来做到这一点或有另一种方式类似于MPMediaPickerController,但将源设置为数组对象?

在Collectionview问题iOS中的单元格中添加复选标记图像

我试图添加复选标记图像单元格,但我有一个问题,我只是select1单元格,虽然我设置multiselection = YES为collectionview。 还有另外一个问题是当我滚动collectionview时,选中的单元格被重用,所有复选标记图片都是不正确的。 以下是我使用的代码。 – (UICollectionViewCell *)collectionView:(UICollectionView *)collectionView cellForItemAtIndexPath:(NSIndexPath *)indexPath { TDPhotoCell *photoCell = [collectionView dequeueReusableCellWithReuseIdentifier:TDPhotoCellIdentifier forIndexPath:indexPath]; TDPhoto *photo = self.photosArray[indexPath.row]; [photoCell.photoImage sd_setImageWithURL:photo.imageURL placeholderImage:[UIImage imageNamed:@"placeholder.png"] completed:^(UIImage *image, NSError *error, SDImageCacheType cacheType, NSURL *imageURL) { [activity removeFromSuperview]; }]; if (self.isSelectMode) { // check the selected photo if (self.selectedItemIndexPath != nil && [indexPath compare:self.selectedItemIndexPath] == NSOrderedSame) […]

UICollectionView reloadData()不会更新集合视图中的单元格

这里是我试图达到什么的高层次的描述; 1.获取数据2.将获取的数据保存在数组对象中3.使用数组大小​​更新集合视图 这是我的代码 class ItemcollectionViewController:UICollectionViewController, UICollectionViewDelegateFlowLayout { let cellId = "CellId" var categories = [Category]() let viewOptionVar:ViewOptionBar = { let vOV = ViewOptionBar() vOV.translatesAutoresizingMaskIntoConstraints = false return vOV }() private func fetchData() { let categoryController = CategoryController() categoryController.getAllCategory(username: "blah", password: "password") {(returnedCategories, error) -> Void in if error != nil { print(error) return } self.categories […]

检测用户从UICollectionView拖出项目?

我有一个UICollectionView ,我希望能够将项目从视图中拖出来,然后删除它们。 (非常类似Dock在Dock OS上的工作方式:将东西拖动,然后松开,然后将其移除)。 我已经做了一些研究,但是我发现几乎所有的东西都在寻找可以拖放来重新sorting的 CollectionView。 我不需要重新sorting(我很高兴从源数组中删除给定索引处的项目,然后重新加载),我只需要检测项目何时移出视图并发布。 所以我想我的问题是这样的: 1)这是可能的内置CollectionView,某种itemWasDraggedOutsideViewFromIndex:方法或东西? 2)如果不是,是否可以用子类来完成(特别是CollectionView初学者可能)? 3)是否有任何代码示例或教程可以推荐这样做?

收集视图单元格刷新不会发生

加载视图时,我从api调用填充数据并将其显示到单元格中: override func viewDidLoad() { super.viewDidLoad() parseData(urll: url) } 当我使用search栏进行search时,我正在使用以下代码填充一组新的项目: func searchBarSearchButtonClicked(_ searchBar: UISearchBar) { let keywords = searchBar.text let finalKey = keywords?.replacingOccurrences(of: " ", with: "+") let finalurl = "https://api.giphy.com/v1/gifs/search?api_key=0d4f9877de6d4927943adf5a0d20e8a0&q=\(finalKey!)&limit=25&offset=0&rating=G&lang=en" parseData(urll: finalurl) self.view.endEditing(true) } 但是,当它加载新的项目旧的项目不会被删除,我试过使用重新加载数据,但没有奏效。 而且我已经重载了parseData()函数中的数据函数。 parsedata()代码: func parseData(urll : String) { var request = URLRequest(url: URL(string: urll)!) request.httpMethod = "GET" let config = […]