从iOS7开始,我的顶部UITableView
有一个额外的空间,有一个风格UITableViewStyleGrouped
.
这是一个例子:
tableview从第一个箭头开始,有35个像素的无法解释的填充,然后绿色标题是UIView
返回的viewForHeaderInSection
(其中该部分为0).
任何人都可以解释这个35像素的数量来自何处以及如何在不切换的情况下摆脱它UITableViewStylePlain
?
问题很简单:如何UITableViewCell
从Xib文件加载自定义?这样做允许您使用Interface Builder来设计单元格.由于内存管理问题,答案显然并不简单.这个主题提到了这个问题并建议了一个解决方案,但是在NDA发布之前并且没有代码.这是一个很长的线程,在没有提供明确答案的情况下讨论了这个问题.
这是我用过的一些代码:
static NSString *CellIdentifier = @"MyCellIdentifier";
MyCell *cell = (MyCell *)[tableView dequeueReusableCellWithIdentifier:CellIdentifier];
if (cell == nil) {
NSArray *nib = [[NSBundle mainBundle] loadNibNamed:CellIdentifier owner:self options:nil];
cell = (MyCell *)[nib objectAtIndex:0];
}
Run Code Online (Sandbox Code Playgroud)
要使用此代码,请创建MyCell.m/.h,它是所需组件的新子类UITableViewCell
并添加IBOutlets
.然后创建一个新的"空XIB"文件.在IB中打开Xib文件,添加一个UITableViewCell
对象,将其标识符设置为"MyCellIdentifier",并将其类设置为MyCell并添加组件.最后,连接IBOutlets
到组件.请注意,我们没有在IB中设置文件所有者.
如果未通过其他工厂类加载Xib,则其他方法主张设置文件所有者并警告内存泄漏.我在Instruments/Leaks下测试了上面的内容,没有发现内存泄漏.
那么从Xibs加载单元格的规范方法是什么?我们设置文件的所有者吗?我们需要工厂吗?如果是这样,工厂的代码是什么样的?如果有多种解决方案,让我们澄清每种解决方案的优缺点......
我正在尝试调整表格视图中其中一个单元格的单元格高度.我正在从相关单元格的"尺寸检查器"中的"行高"设置中调整大小.当我在iPhone上运行应用程序时,单元格的默认大小设置为表格视图中的"行大小".
如果我更改表视图的"行大小",则所有单元格的大小都会更改.我不想这样做,因为我只想要一个单元格的自定义大小.我已经看到很多帖子都有针对该问题的程序化解决方案,但我更愿意通过故事板来实现,如果可能的话.
我正在尝试UICollectionViewCells
使用自动布局进行自我调整,但我似乎无法让单元格根据内容调整自己的大小.我无法理解如何根据单元格内容中的内容更新单元格的大小.
这是我尝试过的设置:
UICollectionViewCell
一个UITextView
.UITextView
已禁用.UITextView
固定在单元格左侧,显式宽度为320.UITextView
固定到单元格的顶部.UITextView
具有高度限制设置为其中一个恒定的UITextView
报告将适合文本.这是单元格背景设置为红色,UITextView
背景设置为蓝色的样子:
我把我已经在GitHub上玩的项目在这里.
是否可以自动调整UILabel框/边界的大小以适应包含的文本?(我不在乎它是否比显示器大)
因此,如果用户输入"你好"或"我的名字真的很长,我希望它适合这个盒子",它永远不会被截断,标签会相应地"加宽"吗?
我对自动布局的理解是,它采用超视图的大小,并以约束和内在大小为基础计算子视图的位置.
有没有办法扭转这个过程?我想在约束和内在大小的基础上调整superview的大小.实现这一目标的最简单方法是什么?
我有在Xcode中设计的视图,我用它作为标题UITableView
.该视图包括标签和按钮.标签的大小因数据而异.根据约束条件,标签成功按下按钮,或者如果按钮和superview底部之间存在约束,则标签将被压缩.
我找到了一些类似的问题,但他们没有很好的答案.
我有一个使用自动布局在故事板中定义UITableView
的自UITableViewCell
定义.细胞有几条多线UILabels
.
在UITableView
出现要正确计算单元格高度,但在最初的几个细胞高度不正确的标签之间的分歧.滚动一下后,一切都按预期工作(即使是最初不正确的单元格).
- (void)viewDidLoad {
[super viewDidLoad]
// ...
self.tableView.rowHeight = UITableViewAutomaticDimension;
}
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
TableViewCell *cell = [self.tableView dequeueReusableCellWithIdentifier:@"TestCell"];
// ...
// Set label.text for variable length string.
return cell;
}
Run Code Online (Sandbox Code Playgroud)
有什么我可能会遗漏,导致自动布局在前几次无法完成其工作吗?
我已经创建了一个演示此行为的示例项目.
我正在以编程方式使用自动布局约束来布局我的自定义UITableView单元格,并且我正确地定义了单元格大小 tableView:heightForRowAtIndexPath:
它在iOS6上运行得很好,在iOS7中看起来也很好
但是当我在iOS7上运行应用程序时,这是我在控制台中看到的那种消息:
Break on objc_exception_throw to catch this in the debugger.
The methods in the UIConstraintBasedLayoutDebugging category on UIView listed in <UIKit/UIView.h> may also be helpful.
2013-10-02 09:56:44.847 Vente-Exclusive[76306:a0b] Unable to simultaneously satisfy constraints.
Probably at least one of the constraints in the following list is one you don't want. Try this: (1) look at each constraint and try to figure out which you don't expect; (2) find the code that added the unwanted constraint or …
Run Code Online (Sandbox Code Playgroud) UIView的内容抗压性和内容拥抱是什么?这些与视图的内在内容大小有何关系?
我已经和Swift和iOS合作了好几个月了.我熟悉许多方法,但我不够好,我可以不用看就写出来.我很欣赏Stack Overflow过去提供的快速答案,让我回到正轨,我已经生锈了(例如,AsyncTask Android示例).
iOS UITableView
对我来说属于这一类.我已经完成了几次,但我忘记了细节.我在StackOverflow上找不到另一个问题,只是要求一个基本的例子,我正在寻找比许多在线教程更短的东西(虽然这个非常好).
我将在下面提供一个答案供我将来参考和你的.
ios ×10
uitableview ×7
autolayout ×5
cocoa-touch ×2
ios7 ×2
ios5 ×1
ios8 ×1
iphone ×1
objective-c ×1
storyboard ×1
swift ×1
uilabel ×1
uiview ×1
xcode4.2 ×1
xib ×1