用于 UITableViewCell 的背景视图的初始框架
我目前正在使用 self.frame
初始化 UITableViewCell 的 backgroundView 框架。这似乎适用于设备方向更改(单元格背景填充整个单元格,看起来不错等)。 什么是更好的框架(如果有的话)?
编辑#1:我还使用 CGRectZero
作为框架初始化了backgroundView。这似乎没有什么区别(UITableViewCells 和backgroundViews 在所有界面方向上都可以正常工作)。
我还测试了设置backgroundView 的autoresizingMask 属性。这也没有什么区别。 我只是想了解什么(如果有的话)受到backgroundViews初始框架的影响。
I'm currently initializing my UITableViewCell's backgroundView's frame with self.frame
. This seems to work fine for device orientation changes (cell background fills entire cell, looks fine etc). What's a better frame to use (if any)?
Edit #1: I've also initialized the backgroundView with CGRectZero
as the frame. This seems to make no difference (UITableViewCells and backgroundViews function just fine in all interface orientations).
I've also tested setting the autoresizingMask
property of the backgroundView. This made no difference either. I'd just like to understand what (if anything) is affected by the backgroundViews initial frame.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
假设您尝试添加 UIImageView 作为 backgroundView 并且尝试调整该 imageView 的大小,这是我的经验:
似乎不可能更改 UITableViewCell.backgroundView 的框架(或者至少不是苹果推荐的事情,因此它是文档中未提及)。要使用自定义大小的 UIImageView(例如,具有可调整大小的 UIImage)作为 UITableViewCell 中的背景,我执行以下操作:
1)创建 UIImageView 并将其图像属性设置为您希望的图像。
2) 使用 addSubview: 消息将 UIImageView 添加为 UITableViewCell 的子视图。
3)使用sendSubviewToBack:消息将UIImageView发送到后面。
这会将您的 UIImageView 置于任何其他添加的子视图后面,您现在可以操纵“backgroundView”(也称为图像视图)的框架。
为了确保 imageview 适合 tableViewCell 的框架,请在计算 imageview 的高度时使用 cell.frame 的高度和宽度属性。
Assuming that you are trying to add a UIImageView as backgroundView and that you are trying to resize that imageView, here's my experience:
It seems to be impossible to change the frame of UITableViewCell.backgroundView (or at least not a thing Apple recommends, hence it's not mentioned in the documentation). To use a custom sized UIImageView, eg with a resizable UIImage, as background in a UITableViewCell, I do the following:
1) Create a UIImageView and set its image property to an image of your wish.
2) Add the UIImageView as a subview of the UITableViewCell using the addSubview: message.
3) Send the UIImageView to the back using sendSubviewToBack: message.
This puts your UIImageView behind any other added subviews and you are now able to manipulate the frame of your 'backgroundView' (aka the imageview).
To make sure the imageview will fit the tableViewCell's frame, use cell.frame's height and width properties when calculating the height of your imageview.
如果您开发自定义表格视图单元格,解决方案是在layoutSubviews方法中调整框架。这是我的一个项目中的自定义 UITableViewCell,我需要距左侧 10 点的边距:
If you develop custom table view cell the solution is to adjust the frame in layoutSubviews method. Here is custom UITableViewCell from one of my projects, I needed 10 points margin from left: