尝试使用ios7-esque时,我在点击表格中的单元格时将UIPickerView插入UITableView。这很好,动画效果很好。但是,当我通过调用deleteRowsAtIndexPaths来撤消单元格时会出现问题。
我遇到了“出血”/重叠,其中选择器在表格视图中向下隐藏其中一个单元格。请参阅屏幕截图。
我没有做任何超级自定义,所以我想知道这是否是iOS7错误。所有细胞都有纯色背景(白色)。
非常感谢任何帮助。谢谢!
点击第一行
这是缩回时的动画中期。注意重叠和拾取器在底部的单元格上渗出
答案 0 :(得分:2)
我不知道为什么,但在我看来,选择器单元正在覆盖“选择产品”下面的单元格。如果确实如此,一种解决方法是明确设置单元格的z顺序,将选择器单元放在所有其他单元格之下:
#import <QuartzCore/QuartzCore.h>
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
UITableViewCell *cell = ...;// your logic for getting a cell
BOOL isPickerCell = ...;// your logic for identifying if this is the picker cell
cell.layer.zPosition = isPickerCell ? 0 : 1;
}
如果选择器靠近桌子的底部,它仍然可以显示在最后一个单元格的下方,因为没有任何东西可以覆盖它。例如,如果“选择产品”是最后一个单元格。您可以通过在底部插入空白单元格来解决此问题。这是具有不同高度的细胞的一般问题。
答案 1 :(得分:2)
在努力解决这个问题之后,我意识到Apple的日历应用程序存在同样的问题
但是,他们通过插入带有 <include
android:id="@+id/app_bar"
layout="@layout/custome_app_bar"
/>
动画的行来最小化副作用。
.fade
答案 2 :(得分:0)
我有类似的问题(iOS 8,iPhone 6模拟器)
在我的情况下,我在DatePicker
样式单元格之间或Right Detail
样式单元格和部分页脚之间插入/删除了Right Detail
的自定义单元格强>正如预期的那样。
[self.table beginUpdates];
if (isVisible) {
[self.table insertRowsAtIndexPaths:@[index]
withRowAnimation:UITableViewRowAnimationMiddle];
} else {
[self.table deleteRowsAtIndexPaths:@[index]
withRowAnimation:UITableViewRowAnimationMiddle];
}
[self.table endUpdates];
但是我在Right Detail
样式单元格和截面末尾之间插入/删除了Right Detail
样式单元格,但是使用相同的代码并没有按预期工作。在上面的细胞顶部/通过上面的细胞可以看到出现/消失的细胞,并且细胞移动了两倍。在下图中,人物出现在隐私,动画中期。
然而,我注意到当beginUpdates / endUpdates被注释掉时,单元格只移动了大约半个单元格高度而不是单元格高度的两倍,这意味着它看起来有了很大改进。
我还尝试设置zPosition,这似乎会降低细胞重叠时的可见性。
// [self.table beginUpdates];
if (isVisible) {
[self.table insertRowsAtIndexPaths:@[index]
withRowAnimation:UITableViewRowAnimationMiddle];
} else {
cell = [self.table cellForRowAtIndexPath:peopleIndex];
cell.layer.zPosition = -1;
[self.table deleteRowsAtIndexPaths:@[peopleIndex]
withRowAnimation:UITableViewRowAnimationMiddle];
}
// [self.table endUpdates];