微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

ios – 在从xib加载的UITableViewHeaderFooterView上更改背景颜色说要使用contentView.backgroundColor

我是 creating a UITableViewHeaderFooterView from a xib file,几乎一切正常.

问题是现在,当我尝试更改背景颜色(或者如果我在xib中配置了一个),它将不断地将该消息输出到控制台:

Setting the background color on UITableViewheaderfooterView has been deprecated. Please use contentView.backgroundColor instead.

这意味着我有两个问题:

>如果我不想看到这个警告,我必须摆脱xib文件中的背景颜色(这是不希望的,因为这意味着我的xib不再反映在运行时视图的外观).
>当我尝试通过代码更改背景颜色时,我得到contentView.backgroundColor的建议,但是当我尝试遵循这个建议,没有任何反应. (这是因为contentView为零)

注意:这里有一个similar question,但主要是关于静音消息,没有找到一个解决上述两个问题的替代解决方案.

更新:要清楚,我想继续使用头文件视图的xib文件,并希望能够调用dequeueReusableHeaderFooterViewWithIdentifier:,以便在管理视图时该表可以是高效的.

解决方法

这是找到解决这个问题的最好方法

>将UITableViewheaderfooterView的背景颜色重置为认值.
>直接在UITableViewheaderfooterView的实例下面添加一个视图,并将其称为“内容视图”. (这正是苹果与UITableViewCell做的,我们只是模仿那个结构.)
>现在,您可以将内容视图的背景颜色更改为xib文件中所需的任何内容.
>将任何其他视图放在内容视图中.
>在扩展方法中重新定义contentView属性,并将IBOutlet添加到其定义中. (见下面的代码.)
>将属性与您创建的内容视图相关联,就像使用任何IBOutlet一样.
>您现在可以使用contentView.backgroundColor在代码中更改背景颜色,就像错误消息一样.

.h文件

@interface ABCHeaderView : UITableViewheaderfooterView
@end

.m文件

@interface ABCHeaderView ()

@property (nonatomic,readwrite,retain) IBOutlet UIView *contentView;

@end

@implementation ABCHeaderView

@synthesize contentView;

@end

这种层次结构与Apple’s documentation是一致的:

If you have custom content to display,create the subviews for your content and add them to the view in the contentView property.

原文地址:https://www.jb51.cc/iOS/337037.html

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐