标签: uicollectionviewlayout

UICollectionView contentOffset随自定义布局而变化

我有一个带有自定义UICollectionViewLayout的UICollectionView(实际上,我正在使用这个漂亮的布局).

contentOffset = CGPointZero在viewDidLoad中设置.然而,在viewDidLoad之后,偏移量为-20,并且内容被按下,如下所示:


图片

(它应该与线齐平).我正在界面构建器中加载集合视图布局.似乎我的问题与这个问题非常相似,但那里的解决方案对我不起作用.

我尝试collectionViewContentSize在我的布局实现中进行修改,以确保它总是大于collectionView的大小.虽然这意味着我可以向下滚动我的内容(它比collectionView的高度短)并隐藏额外的空间,我也可以向上滚动查看它.

似乎什么都没有用!

ios contentoffset uicollectionview uicollectionviewlayout

23
推荐指数
3
解决办法
4万
查看次数

UICollectionViewFlowLayout在方向更改时不会失效

我有一个带有UICollectionViewFlowLayout的UICollectionView.我还实现了UICollectionViewDelegateFlowLayout协议.

在我的数据源中,我有一堆UIViewControllers响应自定义协议,所以我可以询问它们的大小和其他一些东西.

在FlowLayout委托中,当它要求sizeForItemAtIndexPath:时,我返回从我的协议获得的项目大小.实现我的协议的ViewControllers根据方向返回不同的项目大小.

现在,如果我将设备方向从纵向更改为横向,则没有问题(项目在横向上更大)但如果我将其更改回来,我会收到此警告:

    the item width must be less that the width of the UICollectionView minus the section insets left and right values.
    Please check the values return by the delegate.
Run Code Online (Sandbox Code Playgroud)

它仍然有效,但我不喜欢它得到警告所以也许你可以告诉我我做错了什么.还有另一个问题.如果我没有告诉我的collectionViews collectionViewLayout在willAnimateRotationToInterfaceOrientation中失效:从不调用sizeForItemAtIndexPath :.

希望你明白我的意思.如果您需要其他信息,请告诉我:)

ios uicollectionview uicollectionviewlayout

22
推荐指数
3
解决办法
2万
查看次数

无法在UICollectionView(iOS)上更改背景颜色

我正在编写我的第一个iOS应用程序,并且我在更改UICollectionView的backgroundColor时遇到了一些问题.

该应用程序具有导航控制器和某些视图.最初,我能够更改AppDelegate实现文件中的颜色:

    - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
    {
        self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];
        self.window.backgroundColor = [UIColor whiteColor];
        [self.window makeKeyAndVisible];

        feedsList = [[FeedsListTVC alloc] init];

        rootNC = [[RootNC alloc] init];
        rootNC.viewControllers = [NSMutableArray arrayWithObjects:feedsList, nil];

        self.window.rootViewController = rootNC;

        return YES;
    }
Run Code Online (Sandbox Code Playgroud)

运用

    self.window.backgroundColor = [UIColor whiteColor];
Run Code Online (Sandbox Code Playgroud)

我能够改变所有视图的背景颜色.但是,我决定添加一个视图(UICollectionView)并将其设置为主视图.所以我将AppDelegate更改为:

    - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
    {
        self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];
        self.window.backgroundColor = [UIColor whiteColor];
        [self.window makeKeyAndVisible];

        CollectionViewLayoutCVL *collectionViewLayout = [[CollectionViewLayoutCVL alloc] init];
        self.viewController = [[MainViewControllerCVC alloc] initWithCollectionViewLayout:collectionViewLayout];

        rootNC = …
Run Code Online (Sandbox Code Playgroud)

ios uibackgroundcolor uicollectionview uicollectionviewlayout

21
推荐指数
1
解决办法
2万
查看次数

UICollectionView在两个方向上滚动

我做了UICollectionView一个垂直滚动.

单元格的宽度大于屏幕宽度,因此我创建了一个customFlowLayout基于UICollectionViewFlow布局的方法,返回正确的计算内容大小.

但是,这不起作用.当单元格的宽度小于屏幕宽度时,它可以工作.这是否意味着在垂直滚动中我们的宽度不能超过屏幕宽度?

水平滚动也是一样,但是高度CollectionView限制在屏幕高度.

有没有办法使它工作?

scroll ios uicollectionview uicollectionviewlayout

20
推荐指数
2
解决办法
3万
查看次数

ios7上的UICollectionViewData validateLayoutInRect中的断言失败

UICollectionViewData validateLayoutInRectiOS7上的断言失败.

我试图UICollectionView使用for循环逐个删除所有项目; 我在下面发布了我的代码.我删除了UICollectionView使用的项目deleteItemsAtIndexPaths.它在iOS6上完美运行,但在iOS7中崩溃,但有以下异常:

UICollectionViewData中的断言失败validateLayoutInRect

collectionArray从那时开始self.collectionView逐个删除对象indexPath.当我删除第4个对象时,它会Assertion failure在iOS7上引发.我在这里使用performBatchUpdates.

请帮我在iOS7中获得正确的结果.分享正确的代码.提前致谢.

try  {    
    for (int i=count-1; i>=0; i--)  {  
        [self.collectionView performBatchUpdates:^(void){  
            [collectionArray removeObjectAtIndex:i]; // First delete the item from you model   
            [self.collectionView deleteItemsAtIndexPaths:@[[NSIndexPath indexPathForRow:i inSection:0]]];  
        } completion:nil];
        [self.collectionView reloadData];
    }
}
@catch (NSException *exception) {
}
@finally {
}
Run Code Online (Sandbox Code Playgroud)

objective-c ios uicollectionviewlayout ios7 xcode5

20
推荐指数
2
解决办法
2万
查看次数

从UICollectionView中删除单元格而不从顶部重新加载

我在我的ios应用程序中使用CollectionView.每个集合单元格都包含一个删除按钮 通过单击按钮,应删除单元格.删除后,该空间将填充下面的单元格(我不希望重新加载CollectionView并再次从顶部开始)

如何使用autolayout从UICollectionView中删除特定单元格?

ios uicollectionview uicollectionviewcell uicollectionviewlayout

19
推荐指数
2
解决办法
4万
查看次数

在UICollectionView的每个边缘周围放置边距

当UICollectionView填充了项目时,它们总是直接进入UICollectionView的边缘,如下所示:

---------------
|X X X X X X X|
|X X X X X X X|
|X X X X X X X|
|X X X X X X X|
|X X X X X X X|
|X X X X X X X|
---------------
Run Code Online (Sandbox Code Playgroud)

我想在每个边缘周围放一个边距,如下所示:

---------------
| X X X X X X |
| X X X X X X |
| X X X X X X |
| X X X X X X |
| …
Run Code Online (Sandbox Code Playgroud)

ios uicollectionview uicollectionviewlayout

19
推荐指数
4
解决办法
3万
查看次数

带有两个标头的UICollectionView

在UICollectionView中有两个标头?

我有一个UICollectionView使用流布局,它也有一个页眉和页脚:

---------   
| head  |
---------
| A | B |
---------
| C | D |
---------
| foot  |
---------
Run Code Online (Sandbox Code Playgroud)

偶尔,我想要两个标题,如下所示:

---------   
| head1 |
---------   
| head2 |
---------
| A | B |
---------
| C | D |
---------
| foot  |
---------
Run Code Online (Sandbox Code Playgroud)

我坚持如何实现这一目标.流动布局似乎只允许一个头和一个脚.如何添加第二个标题?


编辑:我还实现了粘贴标题 - http://blog.radi.ws/post/32905838158/sticky-headers-for-uicollectionview-using - 但我只希望第一个标题是粘性的.这就是为什么我不能只在一个标题中包含所有内容.

iphone objective-c ios uicollectionview uicollectionviewlayout

19
推荐指数
2
解决办法
1万
查看次数

UICollectionView自定义行分隔符

我想使二点黑色隔板UICollectionView为我们的新的应用程序.我们的应用程序截图如下.我们无法使用UITableView,因为我们有自定义插入/删除动画,滚动和视差效果等.

例

objective-c ios uicollectionview uicollectionviewlayout uicollectionreusableview

19
推荐指数
3
解决办法
3万
查看次数

UICollectionView和Supplementary View(标题)

试图在我UICollectionView的标题中添加一个补充视图.我有问题让它工作.

我使用一个自定义UICollectionViewFlowLayout来返回一个contentSize总是至少比帧大1个像素(我使用的UIFreshControl只有UICollectionView滚动,并且设置collectionView.contentSize直接无效)并invalidateLayout打开sectionInsertitemSize更改:

-(void)setSectionInset:(UIEdgeInsets)sectionInset {
    if (UIEdgeInsetsEqualToEdgeInsets(super.sectionInset, sectionInset)) {
        return;
    }

    super.sectionInset = sectionInset;

    [self invalidateLayout];

}

-(void) setItemSize:(CGSize)itemSize {
    if (CGSizeEqualToSize(super.itemSize, itemSize)) {
        return;
    }

    super.itemSize = itemSize;

    [self invalidateLayout];
}

- (CGSize)collectionViewContentSize
{
    CGFloat height = [super collectionViewContentSize].height;

    // Always returns a contentSize larger then frame so it can scroll and UIRefreshControl will work
    if (height < self.collectionView.bounds.size.height) {
        height = …
Run Code Online (Sandbox Code Playgroud)

objective-c ios uicollectionview uicollectionviewlayout

17
推荐指数
4
解决办法
6万
查看次数