首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >UICollectionViewCell中的自动布局不起作用

UICollectionViewCell中的自动布局不起作用
EN

Stack Overflow用户
提问于 2014-09-12 09:06:35
回答 4查看 39.6K关注 0票数 52

我有一个简单的UICollectionView,它的单元格只有一个UITextView。UITextView被约束到单元格的边缘,因此它们应该保持与单元格大小相同的大小。

我遇到的问题是,由于某些原因,当我通过collectionView:layout:sizeForItemAtIndexPath:.指定像元大小时,这些约束不起作用

我在故事板中将单元大小设置为320x50。如果我用sizeForItemAtIndexPath:返回一个高度是单元格高度的2倍的大小,尽管我设置了约束,UITextView仍然保持相同的高度。我使用的是Xcode6 GM。

我的视图控制器代码是:

代码语言:javascript
运行
AI代码解释
复制
@implementation TestViewController

- (void)viewDidLoad
{
    [super viewDidLoad];

    self.collectionView.delegate = self;
    self.collectionView.dataSource = self;
}

- (void)viewDidAppear:(BOOL)animated
{
    [super viewDidAppear:animated];

    UICollectionViewCell *c = [self.collectionView cellForItemAtIndexPath:[NSIndexPath indexPathForItem:0 inSection:0]];

    NSLog(@"%f", c.frame.size.height);

    UITextView *tv = (UITextView *)[c viewWithTag:9];
    NSLog(@"%f", tv.frame.size.height);

}

- (NSInteger)collectionView:(UICollectionView *)collectionView numberOfItemsInSection:(NSInteger)section
{
    return 1;
}

- (UICollectionViewCell *)collectionView:(UICollectionView *)collectionView cellForItemAtIndexPath:(NSIndexPath *)indexPath
{
    UICollectionViewCell *cell = [collectionView dequeueReusableCellWithReuseIdentifier:@"cell" forIndexPath:indexPath];

    return cell;
}

- (CGSize)collectionView:(UICollectionView *)collectionView layout:(UICollectionViewLayout *)collectionViewLayout sizeForItemAtIndexPath:(NSIndexPath *)indexPath
{
    UICollectionViewFlowLayout *flowLayout = (UICollectionViewFlowLayout *)collectionView.collectionViewLayout;

    CGSize size = flowLayout.itemSize;

    size.height = size.height * 2;

    return size;
}

@end

viewDidAppear中的那些日志:输出如下:

100.00000

50.00000

正如您所看到的,UITextView高度不会随单元格高度而改变。

以下是我在UICollectionViewCell中使用约束的UITextView设置的故事板的屏幕截图:

我知道使用自动布局约束可以很好地处理UITableViewCells和动态调整大小。我不知道为什么它在这种情况下不起作用。有谁有什么想法吗?

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2014-09-13 05:38:52

我刚刚在iOS开发者论坛上看了一下。显然,这是一个运行在iOS 7设备上的iOS 8软件开发工具包的错误。解决方法是将以下内容添加到UICollectionViewCell的子类中:

代码语言:javascript
运行
AI代码解释
复制
- (void)setBounds:(CGRect)bounds {
    [super setBounds:bounds];
    self.contentView.frame = bounds;
}
代码语言:javascript
运行
AI代码解释
复制
override var bounds: CGRect {
    didSet {
      contentView.frame = bounds
    }
}
票数 111
EN

Stack Overflow用户

发布于 2015-01-21 14:22:37

等效Swift代码:

代码语言:javascript
运行
AI代码解释
复制
override var bounds: CGRect {
    didSet {
      contentView.frame = bounds
    }
}
票数 42
EN

Stack Overflow用户

发布于 2014-12-16 08:42:02

这就是解决方案,如果你没有子类化UICollectionViewCell的话。只需在dequeueReusableCellWithReuseIdentifier:之后的cellForItemAtIndexPath:下添加以下两行

Obj-C

代码语言:javascript
运行
AI代码解释
复制
[[cell contentView] setFrame:[cell bounds]];
[[cell contentView] setAutoresizingMask:UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleHeight];

Swift - 2.0

代码语言:javascript
运行
AI代码解释
复制
cell.contentView.frame = cell.bounds
cell.contentView.autoresizingMask = [.FlexibleWidth, .FlexibleHeight]
票数 25
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/25804588

复制
相关文章
自动布局
AutoLayout是一种基于约束的,描述性的布局系统。 item1.attribute1 = multiplier * item2.attribute2 + constant + (id)constraintWithItem:(id)item1 attribute:(NSLayoutAttribute)attribute1 relatedBy:(NsLayoutRelation)relation
用户3004328
2018/09/06
3570
自动布局
iOS开发:UICollectionViewCell删除的实现方法
使用场景:在UICollectionView的cell中,点击长按手势删除列表中的其中一个UICollectionViewCell的方法。具体实现步骤如下所示。
三掌柜
2021/12/03
2.3K0
iOS自动布局
简单示例 override func viewDidLoad() { super.viewDidLoad() baiduMap = BMKMapView(forAutoLayout: {}()) self.mapView.addSubview(baiduMap); self.mapView.addConstraints(self.layoutConstraints()) } func layoutConstraints() -> [NSLayoutConstrain
码客说
2019/10/22
3420
WordPress中的jQuery库不起作用的相关问题
WordPress 中的jQuery 库问题曾经困扰了我一段时间。如果仅仅加载WordPress 自带的jQuery 库,在使用一些jQuery 插件的时候明明是代码没有错误,但就是不起作用,该有的效果不能实现;但加载了原版的jQuery 库却又可以了,这样一来却同时加载了两个jQuery 库,网页速度拖慢了而且根本没有必要。 后来才了解到:为了防止与其他 JS 库(如 YUI)冲突,WordPress 内置 jQuery 库的末尾都在原版的基础上加入了 jQuery.noConflict()这个东东,以至
Jeff
2018/01/19
4.1K0
SpringCloudGateWay中跨域配置不起作用
👨‍💻个人主页: 才疏学浅的木子 🙇‍♂️ 本人也在学习阶段如若发现问题,请告知非常感谢 🙇‍♂️ 📒 本文来自专栏: 问题(BUG)集合 🌈 每日一语:纯纯降智的我 🌈 问题描述 SpringCloudGateWay中跨域配置不起作用 使用filter @Component public class CORSFilter implements Filter{ @Override public void doFilter(ServletRequest request, Serv
才疏学浅的木子
2022/11/13
1.3K0
SpringCloudGateWay中跨域配置不起作用
jQuery:delegate中select()不起作用的解决方法
jQuery有一个很好用的delegate(事件委派)功能,可以给当前以及将来(动态添加)的元素绑定一个事件处理函数。 比如下面的例子,动态添加一个输入文本框后,我想让所有文本框(不管是不是动态添加的)在获取焦点时,自动转大写。 <!doctype html> <html> <head> <title>delegate测试</title> <script type="text/javascript" src="http://ajax.aspnetcdn.com/ajax/jQuery/jquery
菩提树下的杨过
2018/01/24
2.9K0
为什么 strace 在 Docker 中不起作用?
在编辑“容器如何工作”爱好者杂志的能力页面时,我想试着解释一下为什么 strace 在 Docker 容器中无法工作。
用户8639654
2021/09/18
6.5K0
Git中.gitignore文件不起作用的解决以及Git中的忽略规则介绍
使用Git管理代码的过程中,可以修改.gitignore文件中的标示的方法来忽略开发者想忽略掉的文件或目录,如果没有.gitignore文件,可以自己手工创建。在.gitignore文件中的每一行保存一个匹配的规则例如:
Java架构师历程
2019/03/08
4.6K0
iOS自动布局——Masonry详解
前言 UI布局是整个前端体系里不可或缺的一环。代码的布局是设计语言与用户视觉感受沟通的桥梁,不论它看起来多么简单或是琐碎,但不得不承认,绝大部分软件开发的问题,都是界面问题。那么,如何高效的完成UI开
Oceanlong
2018/07/03
1K0
iOS流布局UICollectionView系列五——圆环布局的实现
        前边的几篇博客,我们了解了UICollectionView的基本用法以及一些扩展,在不定高的瀑布流布局中,我们发现,可以通过设置具体的布局属性类UICollectionViewLayoutAttributes来设置设置每个item的具体位置,我们可以再扩展一下,如果位置我们可以自由控制,那个布局我们也可以更加灵活,就比如创建一个如下的circleLayout:
珲少
2018/08/16
1.5K0
iOS流布局UICollectionView系列五——圆环布局的实现
iOS自动布局——Masonry详解
UI布局是整个前端体系里不可或缺的一环。代码的布局是设计语言与用户视觉感受沟通的桥梁,不论它看起来多么简单或是琐碎,但不得不承认,绝大部分软件开发的问题,都是界面问题。那么,如何高效的完成UI开发,也是软件行业一直在克服的问题。
鹅厂新鲜事儿
2018/04/11
3K2
iOS自动布局——Masonry详解
解决 Tailwind CSS + CSS modules 中 @apply dark: 不起作用的问题
给博客添加一个背景图片玩玩。 加上去了,发现原来的 toc 栏有点怪,不如加个模糊滤镜和透明背景色美化一下,然后就遇到了问题。
Cesirdy
2023/05/30
1.5K0
AutoLayout自动布局在线课程
AutoLayout是一种基于约束的,描述性的布局系统。AutoLayout为开发者提供了一种不同于以往UI元素位置指定的布局方法。以前布局是通过frame属性来定义其在当前view中的位置和尺寸。使用AutoLayout则变为使用约束条件来定义view的位置和尺寸,最大好处是解决了不同分辨率和屏幕尺寸下view的适配问题,也简化了旋转时view的位置的定义。
YungFan
2019/01/12
6110
WPF中的布局方式
3.WarpPanel:在一系列可换行的行中放置元素;在水平方向上,WarpPanel面板从左向右放置条目,然后在随后的行中放置元素;在垂直方向上,WarpPanel面板在自上而下的列中放置元素,并使用附加的列放置剩余的条目:
全栈程序员站长
2022/09/14
1.7K0
WPF中的布局方式
Git中.gitignore文件不起作用的解决以及Git中的忽略规则介绍
在Studio里使用Git管理代码的过程中,可以修改.gitignore文件中的标示的方法来忽略开发者想忽略掉的文件或目录,如果没有.gitignore文件,可以自己手工创建。在.gitignore文件中的每一行保存一个匹配的规则例如:
smy
2019/03/13
1.6K0
iOS流布局UICollectionView系列一——初识与简单使用UICollectionView
        UICollectionView是iOS6之后引入的一个新的UI控件,它和UITableView有着诸多的相似之处,其中许多代理方法都十分类似。简单来说,UICollectionView是比UITbleView更加强大的一个UI控件,有如下几个方面:
珲少
2018/08/16
3.2K0
iOS流布局UICollectionView系列一——初识与简单使用UICollectionView
在bootstrap中col-md-offset-* 偏移不起作用
在bootstrap中,使用col-md-offset-1、col-md-offset-2、col-md-offset-3、col-md-offset-4等来设置偏移量很常见,但最近就遇到一个问题了,在最新版的bootstrap4.5中,这个值不起作用了。
kirin
2020/10/27
12.7K1
使用xib自定义UIcollectionViewCell控件为nil的问题
该怎么说呢,这是一个很坑的事情,今天在完成一个界面的时候,用了xib来自定义UICollectionViewCell。其实这是一个很简单的过程,关键代码也就包括下面的两部分: //注册集合视图单元格 UINib *nib = [UINib nibWithNibName:@"MyCollectionCell" bundle: [NSBundle mainBundle]]; [_collectionView registerNib:nib fo
梧雨北辰
2018/04/24
1.3K0
Figma组件和自动布局的应用(三)
提到组件化,想必很多接触到大型项目的设计师都很有感触,可能不光是大型项目,就目前的一个产品开发的趋势,组件化都是一个不可逆的过程,越来越多的轻量型产品也都开始部署自己的组件库了。随着设计开发工具协同交叉的不断加强,设计师在做前期的产品设计时,也需要不断加强自己的组件化思维,这样既能够提升设计团队的生产力,也能让设计师更多的接触到产品需求及更专注于产品设计本身。
徐建国
2021/12/01
1.2K0
Figma组件和自动布局的应用(三)
点击加载更多

相似问题

UICollectionViewCell自动布局

31

UICollectionViewCell中的自动布局错误

20

UICollectionViewCell自动编程布局

12

带有自动布局的全屏UICollectionViewCell

11

iOS8中的自动布局UICollectionviewCell

11
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
社区富文本编辑器全新改版!诚邀体验~
全新交互,全新视觉,新增快捷键、悬浮工具栏、高亮块等功能并同时优化现有功能,全面提升创作效率和体验
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文