有没有人知道为什么在UICollectionView上调用reloadData后不会立即更新contentSize?
如果您需要了解contentSize,我发现的最佳工作如下:
[_collectionView reloadData];
double delayInSeconds = 0.0001;
dispatch_time_t popTime = dispatch_time(DISPATCH_TIME_NOW, (int64_t)(delayInSeconds * NSEC_PER_SEC));
dispatch_after(DISPATCH_TIME_NOW, dispatch_get_main_queue(), ^(void)
{
// TODO: Whatever it is you want to do now that you know the contentSize.
});
Run Code Online (Sandbox Code Playgroud)
显然,这是一个相当脆弱的黑客,它对Apple的实现进行了假设,但到目前为止,它已被证明非常可靠.
有没有人有任何其他解决方法或知道为什么会发生这种情况?我正在辩论提交雷达,因为我无法理解为什么他们无法在同一个运行循环中计算contentSize.这就是UITableView为其整个实现工作的方式.
编辑:此问题用于引用块内的setContentOffset方法,因为我想在我的应用程序中滚动集合视图.我已经删除了方法调用,因为人们的回答集中在为什么我没有使用scrollToItemAtIndexPath内部为什么没有更新contentSize.
查看iPhone或iPad上的App Store应用程序,特别是显示屏幕截图的应用程序详细信息屏幕上的内容.屏幕截图查看器会显示您正在查看的屏幕截图,以及下一个和上一个屏幕截图的边缘.我需要实现类似的东西.
我如何做到这一点对穷人来说是公平的:我构建了一个UIScrollView并启用了分页并布置了我的内容.我使框架的大小与内容页面相同,但小于屏幕.然后我禁用了clipToBounds
,所以ScrollView框架之外的任何东西仍然被绘制.现在我可以看到相邻页面的边缘,但它们在ScrollView之外,因此无法接收滚动触摸.App Store应用程序可让您触摸该事物的整个宽度,包括相邻页面的窥视边缘.
那他们怎么做到的呢?
背景
我正在实现UICollectionView
(第一次)努力实现切片的分页水平滚动视图.我希望每个瓷砖显示在框架的中央,它的左边和右边部分可见的姐妹瓷砖(类似于Safari应用程序中的页面选择器).我有兴趣使用它UICollectionView
来利用内置的单元格出列,而不是使用旋转UITableView
.
问题
我发现的问题是,当使用pagingEnabled = YES
和时clipsToBounds = NO
,一旦分页完成,就UICollectionView
删除collectionView
帧外的单元格(它们不在visibleCells
数组中).任何人都可以提供如何在保持这种基本设置的同时实现显示姐妹瓷砖预览效果的建议吗?或者我接近这个错误?
截图
开始
滚动
结束
在滚动屏幕是完全正确的.但是在开始和结束镜头中,我希望在蓝色边缘可以看到绿色.
这是我的AppDelegate.m中的内容(在此基本设置中归功于tutsplus.com):
#import "AppDelegate.h"
@interface ViewController : UICollectionViewController
@end
@implementation ViewController
- (void)viewDidLoad
{
[super viewDidLoad];
[self.collectionView registerClass:[UICollectionViewCell class] forCellWithReuseIdentifier:@"ID"];
[self.view setBackgroundColor:[UIColor blueColor]];
// pad the collection view by 20 px
UIEdgeInsets padding = UIEdgeInsetsMake(20.0, 20.0, 20.0, 20.0);
[self.collectionView setFrame:UIEdgeInsetsInsetRect(self.view.frame, padding)];
// set pagingEnabled and clipsToBounds off
[self.collectionView …
Run Code Online (Sandbox Code Playgroud) 我有一个集合视图,其内容水平滚动,需要在设备的整个宽度上可见.集合视图已clipsToBounds
设置为NO
,并且框架600
宽度pagingEnabled
设置为YES
.
我正在寻找的效果是内容似乎在另一个视图下滑动,但是当单元格在集合视图的框架之外滚动时,它将被删除,以便可以重复使用.
任何人都知道如何让这个工作,或达到类似的效果?