iOS 7 对附件视图和附件类型的布局不同?
Posted
技术标签:
【中文标题】iOS 7 对附件视图和附件类型的布局不同?【英文标题】:iOS 7 lays out accessoryView and accessoryType differently? 【发布时间】:2013-09-25 21:56:52 【问题描述】:还有其他人注意到 ios 7 对自定义附件视图的布局与内置的附件类型不同吗?
像这样:
上面的一个是使用:
cell.accessoryView = cell.accessoryButton;
(其中 accessoryButton 是一个自定义的 UIButton),而第二个是使用:
cell.accessoryView = nil;
cell.accessoryType = UITableViewCellAccessoryDisclosureIndicator;
相同的代码、相同的应用、相同的 Xcode,但在 iOS 6 上运行:
这是 SDK 中的错误吗?或者我可以通过代码控制的东西?
【问题讨论】:
自动布局的工作方式发生了一些变化,请查看转移到 ios7 的文档。 (cba找链接抱歉) 【参考方案1】:如果您对UITableViewCell
进行子类化,您可以在layoutSubviews
中对其进行调整
- (void)layoutSubviews
[super layoutSubviews];
CGRect accessoryViewFrame = self.accessoryView.frame;
accessoryViewFrame.origin.x = CGRectGetWidth(self.bounds) - CGRectGetWidth(accessoryViewFrame);
self.accessoryView.frame = accessoryViewFrame;
【讨论】:
如果你没有子类化单元格? 不再在 iOS 8 中工作?accessoryViewFrame.size
和 accessoryViewFrame.origin
的所有值都等于 0。
是的,从 iOS8 和 iOS9 开始,accessoryView 框架为“(CGRect) _accessoryFrame = (origin = (x = 0, y = 0), size = (width = 0, height = 0))” 【参考方案2】:
添加子视图而不是附件视图
UIButton *indicatorBtn = [UIButton buttonWithType:UIButtonTypeCustom];
indicatorBtn.frame = CGRectMake(cell.contentView.frame.size.width-55, 2, 50, 50);
[indicatorBtn setBackgroundImage:[UIImage imageNamed:@"right_indicator.png"]
forState:UIControlStateNormal];
indicatorBtn.backgroundColor = [UIColor clearColor];
//indicatorBtn.alpha = 0.5;
indicatorBtn.tag = indexPath.row;
[indicatorBtnaddTarget:self action:@selector(method:)
forControlEvents:UIControlEventTouchUpInside];
[cell.contentView addSubview:indicatorBtn];
【讨论】:
以上是关于iOS 7 对附件视图和附件类型的布局不同?的主要内容,如果未能解决你的问题,请参考以下文章
iOS 7 – 隐藏的输入附件视图显示在 bannerViewActionShouldBegin:willLeaveApplication: 之后
在ios 7中,UITableViewCell Accessory DetailDisclosureButton分为两个不同的附件按钮