【发布时间】:2018-03-02 11:10:19
【问题描述】:
使用自定义 UITableViewCell,我正在尝试更改 tableViewCell 的删除按钮的高度。我已经在 SO 上尝试了所有可用的解决方案。
大家都提到,在 customTableViewCell 类中,我们需要重写 layoutSubviews 方法并遍历 self.subViews 以找到一个应该等于 UITableViewCellDeleteConfirmationView 的子视图,或者在其他 iOS 版本中它是 UITableViewCellDeleteConfirmationControl 所以我使用了以下代码:
- (void)layoutSubviews
{
[super layoutSubviews];
[UIView beginAnimations:nil context:NULL];
[UIView setAnimationBeginsFromCurrentState:YES];
[UIView setAnimationDuration:0.0f];
for (UIView *subView in self.subviews) {
NSLog(@"subview: %@", self.subviews);
if([NSStringFromClass([subView class]) rangeOfString:@"Delete"].location != NSNotFound) {
CGRect newFrame = subView.frame;
newFrame.size.height = 87;
subView.frame = newFrame;
}
}
[UIView commitAnimations];
}
但是self.subView只有两个视图,即
- UITableViewCellContentView
- UITableViewCellSeparatorView
iOS 10+如何获取tableViewCell的删除按钮视图?
编辑
这是我的视图层次结构:
【问题讨论】:
-
尝试访问
UITableViewCellContentView的子视图。虽然我强烈建议不要更改删除按钮的高度 -
@Malik 已经尝试过了,
UITableViewCellContentView只包含一个子视图,即 UIView。 -
可能是该 uiview 的子视图。获取层次结构的最快方法是在调试时使用
Debug->View Debugging->Capture View Hierarchy。在那里您可以看到完整的层次结构并更好地了解如何导航到按钮 -
请看我更新的答案。
-
捕获层次结构时删除按钮是否可见?您需要打开应用程序,滑动以显示删除按钮,然后捕获层次结构。如果在列表中找不到删除按钮,请通过旋转捕获的视图在图形视图中找到它。找到后,单击删除按钮,它会自动在左侧面板中突出显示它
标签: objective-c uitableview ios10