我有隐藏分隔线的UITableView,当我拖动单元格时,阴影会出现某种情况,因为上下边框会出现。怎么隐藏这个?请看例子:
非常感谢!
答案 0 :(得分:4)
所以,我已经用方法回答了UITableView的子类:
- (void) didAddSubview:(UIView *)subview
{
[super didAddSubview:subview];
if([subview.class.description isEqualToString:@"UIShadowView"]) {
subview.hidden = YES;
}
}
答案 1 :(得分:4)
NoShadowTableView.m
#import "NoShadowTableView.h"
@interface NoShadowTableView ()
{
// iOS7
__weak UIView* wrapperView;
}
@end
@implementation NoShadowTableView
- (void) didAddSubview:(UIView *)subview
{
[super didAddSubview:subview];
// iOS7
if(wrapperView == nil && [[[subview class] description] isEqualToString:@"UITableViewWrapperView"])
wrapperView = subview;
// iOS6
if([[[subview class] description] isEqualToString:@"UIShadowView"])
[subview setHidden:YES];
}
- (void) layoutSubviews
{
[super layoutSubviews];
// iOS7
for(UIView* subview in wrapperView.subviews)
{
if([[[subview class] description] isEqualToString:@"UIShadowView"])
[subview setHidden:YES];
}
}
@end
答案 2 :(得分:2)
此代码适合我!
import UIKit
class NoShadowTableView: UITableView {
override func didAddSubview(_ subview: UIView) {
super.didAddSubview(subview)
if "\(type(of: subview))" == "UIShadowView" {
subview.removeFromSuperview()
}
}
}
答案 3 :(得分:1)
我使用默认的UITableView重新排序控件遇到了类似的问题。所以我用这个外部第三方库解决了我的问题。
https://github.com/shusta/ReorderingTableViewController
希望这有帮助
答案 4 :(得分:1)
Swift 3实现(删除了iOS6支持)
import UIKit
class NoShadowTableView: UITableView {
weak var wrapperView: UIView?
override func didAddSubview(_ subview: UIView) {
super.didAddSubview(subview)
if wrapperView == nil && "\(type(of: subview))" == "UITableViewWrapperView" {
wrapperView = subview
}
}
override func layoutSubviews() {
super.layoutSubviews()
wrapperView?.subviews.forEach({ view in
if "\(type(of: view))" == "UIShadowView" {
view.isHidden = true
}
})
}
}
答案 5 :(得分:1)
Quick hack继承了UITableViewCell并添加了方法:
override func layoutSubviews() {
super.layoutSubviews()
superview?.subviews.filter({ "\(type(of: $0))" == "UIShadowView" }).forEach { (sv: UIView) in
sv.removeFromSuperview()
}
}
答案 6 :(得分:0)
对于我来说,使用UIShadowView并不起作用。我在iOS 10上检查了解决方案。但是单元类中的一行已经完成了这个技巧:
override func layoutSubviews() {
super.layoutSubviews()
self.subviews.filter{ $0 is UIImageView }.forEach { $0.isHidden = true }
}
答案 7 :(得分:0)
Swift 4解决方案;使用扩展的uitableviewcontroller,因为现在阴影在表中,并且仅在移动单元格时添加。
class UITableViewControllerEx: UITableViewController {
override func viewWillLayoutSubviews() {
super.viewWillLayoutSubviews()
view.subviews.filter({ String(describing: type(of: $0)) == "UIShadowView" }).forEach { (sv: UIView) in
sv.isHidden = true
}
}
}