【问题标题】:UITableViewCell Separator disappearing in iOS7UITableViewCell 分隔符在 iOS7 中消失
【发布时间】:2013-09-26 07:16:52
【问题描述】:

UITableView 仅在 iOS 7 中存在一些奇怪的问题。

UITableViewCellSeparator 在第一行上方和最后一行下方消失。有时在选择行或一些滚动操作后会出现。

在我的例子中,tableView 是从 Storyboard 加载的 UITableViewStylePlain 样式。问题肯定不在UITableViewCellSeparatorStyle,默认UITableViewCellSeparatorStyleSingleLine没有变化。

正如我在 Apple Dev Forumsherehere)上看到的,其他人也有这样的问题,并且找到了一些解决方法,例如:

Workaround: disable the default selection and recreate the behaviour in a method
trigged by a tapGestureRecognizer.

但我仍在寻找这种分隔符奇怪行为的原因。

有什么想法吗?

更新:正如我在 XCode 5.1 DP 和 iOS 7.1 beta 中看到的,Apple 试图解决这个问题。现在分隔符有时会根据需要显示在最后一行下方,经过一些刷新后,但不是在创建 tableview 后。

【问题讨论】:

  • 有时候觉得iOS7太不成熟了。这和我在这里列出的一长串东西显示了 iOS7 与以前的 iOS 的完美相比还有多远。
  • Apple 的设置应用程序也有同样的问题,所以我认为这是 iOS 7 的问题。我已经报告了它,并且在他们的后续行动中,他们要求提供显示问题的图像。
  • @Gatada 您在“设置”应用的哪个位置看到问题?
  • 遇到了同样的问题并通过添加 [cell setSeparatorInset:UIEdgeInsetsFromString(@"1")]; with in (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath 方法
  • 这似乎在 iOS 8.0 测试版中被打破了。如果有人愿意复制它,我已经打开了雷达 17724043。

标签: ios objective-c uitableview cocoa-touch uikit


【解决方案1】:

如果您需要,这里有一个更简单(虽然有点混乱)的解决方法,请在重新加载数据并完成默认动画后尝试选择和取消选择单元格。

只需添加:

[self.tableView selectRowAtIndexPath:indexPath animated:NO scrollPosition:UITableViewScrollPositionNone];
[self.tableView deselectRowAtIndexPath:indexPath animated:NO];

【讨论】:

  • 这个解决方法为我修复了它;但是,我将其反转 - 保留选择。所以,先取消选择,然后重新选择。
  • 当你说“重新加载数据后”时,我不知道要覆盖什么
【解决方案2】:

我也遇到了缺少分隔符的问题,我发现该问题仅在 heightForRowAtIndexPath 返回十进制数时出现。解决方案:

override func tableView(tableView: UITableView, heightForRowAtIndexPath indexPath: NSIndexPath) -> CGFloat {
    return ceil(yourHeight) // Ceiling this value fixes disappearing separators
}

【讨论】:

  • 不实现heightForRowAtIndexPath方法怎么办?
  • 有趣。但是,它也发生在我的项目中 - 并且 heightForRowAtIndexPath 没有实现。在 IB 行/单元格高度为 100。
  • 它没有解决我的问题,我确实有 heightForRowAtIndexPath 方法。
  • 至少部分解决了这个问题。单元格似乎对非整数高度感到困惑。
  • 您需要将像素数设置为上限,然后除以屏幕比例因子以获得可以使用十进制的点。如果您不这样做,它将不会进行视网膜优化。
【解决方案3】:

非常令人惊讶的是,来回更改单元格的 separatorInset 值似乎有效:

NSIndexPath *selectedPath = [self.controller.tableView indexPathForSelectedRow];
[self.controller.tableView deselectRowAtIndexPath:selectedPath animated:YES];

UITableViewCell *cell = [self.controller.tableView cellForRowAtIndexPath:selectedPath];
UIEdgeInsets insets = cell.separatorInset;
cell.separatorInset = UIEdgeInsetsMake(0.0, insets.left + 1.0, 0.0, 0.0);
cell.separatorInset = insets;

【讨论】:

    【解决方案4】:

    我们在应用中遇到了这个问题。当用户选择一个单元格时,一个新的表格视图被推送到导航控制器堆栈上,然后当用户弹出它时,分隔符丢失了。我们通过将[self.tableView deselectRowAtIndexPath:indexPath animated:NO]; 放在didSelectRowAtIndexPath 表视图委托方法中解决了这个问题。

    【讨论】:

    • 你试过self.tableView.allowsMultipleSelection = NO;吗?
    【解决方案5】:

    我发现最简单的解决方案是,在重新加载单元格后,还要重新加载上面的单元格:

    if (indexPath.row > 0) {
        NSIndexPath *path = [NSIndexPath indexPathForRow:indexPath.row - 1 inSection:indexPath.section];
        [self.tableView reloadRowsAtIndexPaths:@[path] withRowAnimation:UITableViewRowAnimationNone];
    }
    

    【讨论】:

    • 为我工作。谢谢。任何其他方法都没有帮助我(包括从 samvermette 的答案中更改分隔符样式)。
    【解决方案6】:

    您是否尝试在表的页眉和页脚中添加一个高度为 1 的 UIView,背景颜色为浅灰色?基本上它会模拟第一个和最后一个分隔符。

    【讨论】:

    • 这听起来不错,但您究竟是如何做到的呢?使用viewforfooter?
    • 并不像听起来那么容易,由于某种原因,我还必须实现 heightforfooter ,否则 initwithframe 中指定的高度将被忽略。我也注意到虽然 lightgraycolor 不是同一种颜色,所以这不会真正起作用。可能需要自定义灰色
    • 这在国际海事组织中很笨拙
    • 是的,我完全同意。这是我在 iOS 7 发布后发现的唯一解决方法,现在有更好的方法吗?
    • 要匹配颜色,使用tableView.separatorColor
    【解决方案7】:

    这对我有用:

    - (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {
    
        // fix for separators bug in iOS 7
        self.tableView.separatorStyle = UITableViewCellSeparatorStyleNone;
        self.tableView.separatorStyle = UITableViewCellSeparatorStyleSingleLine;
    

    【讨论】:

    • 你应该得到更多的支持,这正是我需要的,我将它添加到一个类别中,所以现在在我执行 [tableView reloadData] 之后,如果发生此错误(在我的情况下,页脚分隔符被隐藏正在重新出现),我调用 [tableView reloadSeparators];
    【解决方案8】:

    我通过在 IB 中设置解决了这个问题:Separator Inset = custom, left = 0, right = 0

    【讨论】:

      【解决方案9】:

      扩展 airpaulg 的答案,因为它并不完全适合我..

      我还必须实现 heightforfooter 方法来获取高度

      然后我注意到浅灰色太暗了。我通过抓取 tableview 的当前分隔符颜色并使用它来解决这个问题:

      UIColor *separatorGray = [self.briefcaseTableView separatorColor]; [footerSeparator setBackgroundColor:separatorGray];

      【讨论】:

        【解决方案10】:

        @samvermette

        我通过使用这个委托方法解决了这个问题。现在它不闪烁了:

        -(void)tableView:(UITableView *)tableView didHighlightRowAtIndexPath:(NSIndexPath *)indexPath {
            // fix for separators bug in iOS 7
            tableView.separatorStyle = UITableViewCellSeparatorStyleNone;
            tableView.separatorStyle = UITableViewCellSeparatorStyleSingleLine;
        }
        
        
        -(void)tableView:(UITableView *)tableView didUnhighlightRowAtIndexPath:(NSIndexPath *)indexPath {
            // fix for separators bug in iOS 7
            tableView.separatorStyle = UITableViewCellSeparatorStyleNone;
            tableView.separatorStyle = UITableViewCellSeparatorStyleSingleLine;
        }
        

        【讨论】:

          【解决方案11】:

          补充airpaulg的答案。

          所以基本上必须实现两个 UITableDelegate 方法。这是我的解决方案,适用于 iOS7 和 iOS6。

          #define IS_OS_VERSION_7 (NSFoundationVersionNumber_iOS_6_1 < floor(NSFoundationVersionNumber))
          
          #define UIColorFromRGB(hexRGBValue) [UIColor colorWithRed:((float)((hexRGBValue & 0xFF0000) >> 16))/255.0 green:((float)((hexRGBValue & 0xFF00) >> 8))/255.0 blue:((float)(hexRGBValue & 0xFF))/255.0 alpha:1.0]
          

          // 如果单元格没有覆盖整个屏幕,这将隐藏单元格下方的空表格网格

          - (UIView *)tableView:(UITableView *)tableView viewForFooterInSection:(NSInteger)section
          {
              UIView *view = nil;
          
              if (IS_OS_VERSION_7 /* && <is this the last section of the data source> */)
              {
                  CGFloat height = 1 / [UIScreen mainScreen].scale;
                  view = [[UIView alloc] initWithFrame:CGRectMake(0., 0., 320., height)];
                  view.backgroundColor = UIColorFromRGB(0xC8C7CC);
                  view.autoresizingMask = UIViewAutoresizingFlexibleWidth;
              }
              else
              {
                  view = [UIView new];
              }
              return view;
          }
          
          
          - (CGFloat)tableView:(UITableView *)tableView heightForFooterInSection:(NSInteger)section
          {
              if (IS_OS_VERSION_7 /* && <is this the last section of the data source> */)
              {
                  return 1 / [UIScreen mainScreen].scale;
              }
              else
              {
                  // This will hide the empty table grid below the cells if they do not cover the entire screen
                  return 0.01f;
              }
          }
          

          【讨论】:

            【解决方案12】:

            这为我解决了这个问题:

            确保单元格的clipsToBounds 设置为YES,但单元格的contentView 设置为NO。同时设置cell.contentView.backgroundColor = [UIColor clearColor];

            【讨论】:

            • 在情节提要中将单元格和 contentView 的 clipSubviews 设置为 false 解决了问题!需要更多赞成票!
            • 在单元格上将 clipsToBounds 设置为 YES 对我来说已经足够了。
            【解决方案13】:

            我在我们的项目中也遇到了这个问题。我的表格视图有一个 tableFooterView 可以做到这一点。我发现如果删除 tableFooterView,最后一行下方的分隔符会出现。

            【讨论】:

              【解决方案14】:

              似乎这个问题在很多情况下都会出现。

              对我来说,这与单元格选择有关。我不知道为什么,也没有时间深入研究它,但我可以说它是在我将单元格的selectionStyle 设置为无时开始发生的。即:

              //This line brought up the issue for me
              cell.selectionStyle = UITableViewCellSelectionStyleNone;
              

              我尝试使用上面的一些委托方法来打开和关闭tableViewseparatorStyle 属性,但它们似乎没有解决我的问题。

              我需要它的全部原因是因为我什至不需要单元格选择。

              所以,我确实找到了适合我的东西。我刚刚禁用了UITableView 上的选择:

              tableView.allowsSelection = NO;
              

              希望这对某人有所帮助,如果您不需要选择单元格。

              【讨论】:

                【解决方案15】:

                要解决上述问题,请在 viewDidLoad 中添加空页脚。

                UIView *emptyView_ = [[UIView alloc] initWithFrame:CGRectZero];   
                emptyView_.backgroundColor = [UIColor clearColor];  
                [tableView setTableFooterView:emptyView_];
                

                请不要在 viewForFooterInSection 委托方法中使用上述行。表示不实现 viewForFooterInSection 方法。

                【讨论】:

                  【解决方案16】:

                  我的 UITableView 底部也出现了这种不一致的分隔线显示的问题。 使用自定义页脚视图,我能够创建一条类似的线并将其显示在潜在的现有线(有时会丢失)之上。

                  这个方案唯一的问题是苹果可能有一天会改变线条的粗细

                  - (UIView*) tableView:(UITableView *)tableView viewForFooterInSection:(NSInteger)section
                  {
                      float w = tableView.frame.size.width;
                  
                      UIView * footerView =  [[UIView alloc] initWithFrame:CGRectMake(0, 0, w, 1)];
                      footerView.autoresizingMask = UIViewAutoresizingFlexibleWidth;
                      footerView.clipsToBounds=NO;
                  
                      UIView* separatoraddon = [[UIView alloc] initWithFrame:CGRectMake(0, -.5, w, .5)];
                      separatoraddon.autoresizingMask = UIViewAutoresizingFlexibleWidth;
                      separatoraddon.backgroundColor = tableView.separatorColor;
                      [footerView addSubview:separatoraddon];
                  
                      return footerView;
                  }
                  - (CGFloat) tableView:(UITableView *)tableView heightForFooterInSection:(NSInteger)section
                  {
                      return 1;
                  }
                  

                  【讨论】:

                    【解决方案17】:

                    我转储了受影响单元格的子视图层次结构,发现_UITableViewCellSeparatorView 被设置为隐藏。难怪不显示!

                    我在UITableViewCell 子类中覆盖了layoutSubviews,现在分隔符可以可靠地显示:

                    Objective-C

                    - (void)layoutSubviews {
                        [super layoutSubviews];
                    
                        for (UIView *subview in self.contentView.superview.subviews) {
                            if ([NSStringFromClass(subview.class) hasSuffix:@"SeparatorView"]) {
                                subview.hidden = NO;
                            }
                        }
                    }
                    

                    斯威夫特

                    override func layoutSubviews() {
                        super.layoutSubviews()
                    
                        guard let superview = contentView.superview else {
                            return
                        }
                        for subview in superview.subviews {
                            if String(subview.dynamicType).hasSuffix("SeparatorView") {
                                subview.hidden = false
                            }
                        }
                    }
                    

                    这里提出的其他解决方案对我来说并不能始终如一地工作或看起来很笨重(添加自定义 1 px 页脚视图)。

                    【讨论】:

                    • 我已经使用了你的方法,但没有在子类中我向 UITableViewCell 添加了一个类别。它帮助了我。谢谢。
                    • 当然也可以在一个类别中。由于这需要方法调配,我选择了简单的子类方法。
                    • 这是唯一对我有用的解决方案。当 UITableView 有足够的行可以滚动时,我的问题就出现了。不过,“hasSuffix:”部分非常脆弱。
                    • 为我工作。也许问题很愚蠢,但这不是使用 Private API 吗?
                    • 从技术上讲,它没有使用私有 API,因此您的应用不会因此而被拒绝。但它依赖于实现细节,可能会在未来的 iOS 版本中中断。
                    【解决方案18】:

                    对我来说不同的是重新加载底部分隔线不会出现的行:

                    NSIndexPath *indexPath = 
                         [NSIndexPath indexPathForRow:rowIndex inSection:sectionIndex];  
                    [self.tableView reloadRowsAtIndexPaths:@[indexPath] withRowAnimation:UITableViewRowAnimationNone];
                    

                    【讨论】:

                      【解决方案19】:

                      我已经解决了将这些代码行放在 tableview 更新发生的地方:

                      self.tableView.separatorStyle = UITableViewCellSeparatorStyle.None;
                      self.tableView.separatorStyle = UITableViewCellSeparatorStyle.SingleLine;
                      

                      例如,就我而言,我把它们放在这里:

                      tableView.beginUpdates()
                      tableView.insertRowsAtIndexPaths(insertIndexPaths, withRowAnimation: UITableViewRowAnimation.Fade)
                      tableView.endUpdates()
                      self.tableView.separatorStyle = UITableViewCellSeparatorStyle.None;
                      self.tableView.separatorStyle = UITableViewCellSeparatorStyle.SingleLine;
                      

                      【讨论】:

                        【解决方案20】:

                        我用另一种方式解决这个问题:在tableview.tableFooterView中添加一个高度为0.5px,颜色为浅灰色的图层作为其子图层。

                        代码是这样的:

                        UIView *tableFooterView = [[UIView alloc] initWithFrame:CGRectMake(0, 0, 320, 70)];
                        CALayer *topSeperatorLine = [CALayer layer];
                        topSeperatorLine.borderWidth = 0.5f;
                        topSeperatorLine.borderColor = [UIColor lightGrayColor].CGColor;
                        topSeperatorLine.frame = CGRectMake(0, 0, 320, 0.5f);
                        [tableFooterView.layer addSublayer:topSeperatorLine];
                        self.tableView.tableFooterView = tableFooterView;
                        

                        【讨论】:

                          【解决方案21】:

                          在你的 UITableViewCell 子类中实现 layoutSubviews 并添加:

                          - (void)layoutSubviews{
                              [super layoutSubviews]
                              for (UIView *subview in self.contentView.superview.subviews) {
                                  if ([NSStringFromClass(subview.class) hasSuffix:@"SeparatorView"]) {
                                      CGRect separatorFrame = subview.frame;
                                      separatorFrame.size.width = self.frame.size.width;
                                      subview.frame = separatorFrame;
                                  }
                              }
                          }
                          

                          【讨论】:

                            【解决方案22】:

                            正如其他人所提到的,这个问题似乎以多种方式表现出来。我通过以下解决方法解决了我的问题:

                            [tableView beginUpdates];
                            [tableView reloadRowsAtIndexPaths:@[indexPath] withRowAnimation:UITableViewRowAnimationNone];
                            [tableView endUpdates];
                            

                            【讨论】:

                              【解决方案23】:

                              通过查看答案和解决方案,我得出了这样的观察结果:

                              这似乎在 iOS 7 和 8 中都有问题。我注意到在 viewDidLoad 方法中从代码中选择单元格时出现问题,所以:

                              1) 如果有人不介意呈现视图和选择单元格之间的明显延迟,解决方法是在 viewDidAppear: 中这样做

                              2) the second solution 为我工作,但代码看起来有点脆弱,因为它基于 UITableViewCell 的内部实现

                              3) 添加自己的分隔符似乎是目前最灵活和最好的,但需要更多编码:)

                              【讨论】:

                                【解决方案24】:

                                在更新单元格之前,您需要删除单元格选择。然后你可以恢复选择。

                                NSIndexPath *selectedPath = [self.tableview indexPathForSelectedRow];
                                    [self.tableview deselectRowAtIndexPath:selectedPath animated:NO];
                                    [self.tableview reloadRowsAtIndexPaths:@[ path ] withRowAnimation:UITableViewRowAnimationNone];
                                    [self.tableview selectRowAtIndexPath:selectedPath animated:NO scrollPosition:UITableViewScrollPositionNone];
                                

                                【讨论】:

                                  【解决方案25】:

                                  viewWillAppear 中设置样式对我有用。

                                  【讨论】:

                                    【解决方案26】:

                                    由于这仍然是 IOS 8 的问题,我将在 Swift 中添加我的解决方案。将 tableview 分隔线设置为 none。然后将此代码添加到 cellForRowAtIndexPath 委托方法。它将添加一个很好的分隔符。 if 语句允许决定哪些单元格应该有分隔符。

                                        var separator:UIView!
                                        if let s = cell.viewWithTag(1000)
                                        {
                                            separator = s
                                        }
                                        else
                                        {
                                            separator = UIView()
                                            separator.tag = 1000
                                            separator.setTranslatesAutoresizingMaskIntoConstraints(false)
                                            cell.addSubview(separator)
                                    
                                            // Swiper constraints
                                            var leadingConstraint = NSLayoutConstraint(item: separator, attribute: .Leading, relatedBy: .Equal, toItem: cell, attribute: .Leading, multiplier: 1, constant: 15)
                                            var heightConstraint = NSLayoutConstraint(item: separator, attribute: .Height, relatedBy: .Equal, toItem: nil, attribute: .NotAnAttribute, multiplier: 1, constant: 0.5)
                                            var bottomConstraint = NSLayoutConstraint(item: cell, attribute: .Bottom, relatedBy: .Equal, toItem: separator, attribute: .Bottom, multiplier: 1, constant:0)
                                            var trailingConstraint = NSLayoutConstraint(item: cell, attribute: .Trailing, relatedBy: .Equal, toItem: separator, attribute: .Trailing, multiplier: 1, constant: 15)
                                            cell.addConstraints([bottomConstraint, leadingConstraint, heightConstraint, trailingConstraint])
                                        }
                                    
                                        if indexPath.row == 3
                                        {
                                            separator.backgroundColor = UIColor.clearColor()
                                        }
                                        else
                                        {
                                            separator.backgroundColor = UIColor.blackColor()
                                        }
                                    

                                    【讨论】:

                                      【解决方案27】:

                                      适用于 iOS 8 和 iOS 9(测试版 1)的简单干净的解决方案

                                      这是一个简单、干净且非侵入性的解决方法。它涉及调用将修复分隔符的类别方法。

                                      您需要做的就是遍历单元格的层次结构并取消隐藏分隔符。像这样:

                                      for (UIView *subview in cell.contentView.superview.subviews) {
                                          if ([NSStringFromClass(subview.class) hasSuffix:@"SeparatorView"]) {
                                              subview.hidden = NO;
                                          }
                                      }
                                      

                                      我建议将其添加到 UITableViewCell 上的类别中,如下所示:

                                      @interface UITableViewCell (fixSeparator)
                                      - (void)fixSeparator;
                                      @end
                                      
                                      @implementation UITableViewCell (fixSeparator)
                                      
                                      - (void)fixSeparator {
                                          for (UIView *subview in self.contentView.superview.subviews) {
                                              if ([NSStringFromClass(subview.class) hasSuffix:@"SeparatorView"]) {
                                                  subview.hidden = NO;
                                              }
                                          }
                                      }
                                      
                                      @end
                                      

                                      因为分隔符可能会在与当前选定的单元格不同的单元格中消失,所以在表格视图中的 所有 单元格上调用此修复程序可能是个好主意。为此,您可以向 UITableView 添加一个类别,如下所示:

                                      @implementation UITableView (fixSeparators)
                                      
                                      - (void)fixSeparators {
                                          for (UITableViewCell *cell in self.visibleCells) {
                                              [cell fixSeparator];
                                          }
                                      }
                                      
                                      @end
                                      

                                      有了这个,您可以在导致它们消失的操作之后立即在您的 tableView 上调用-fixSeparatos。就我而言,是在调用[tableView beginUpdates][tableView endUpdates] 之后。

                                      正如我在开头所说的,我已经在 iOS 8 和 iOS 9 上测试过。我认为它甚至可以在 iOS 7 上工作,但我没有办法在那里尝试。正如您可能知道的那样,这确实会影响单元的内部结构,因此它可能会在将来的某个版本中停止工作。苹果理论上可以(0.001% 的机会)因此拒绝你的应用程序,但我看不出他们怎么能发现你在那里做什么(检查类的后缀不能被静态分析器检测为某事糟糕,IMO)。

                                      【讨论】:

                                      • 是的。在转换到最新版本的 Swift 后,这对我有用。 ++ 用于在每次调用 tableView.endUpdates() 后调用 fixSeparators。
                                      • 很高兴这对您有所帮助!我真的相信这是最好的解决方案,所以希望更多的人会发现它。
                                      【解决方案28】:

                                      我尝试了很多建议来解决,但无法解决。最后我决定自定义分隔线如下:

                                      func tableView(tableView: UITableView, willDisplayCell cell: UITableViewCell, forRowAtIndexPath indexPath: NSIndexPath) {
                                          var lineView = UIView(frame: CGRectMake(20, cell.contentView.frame.size.height - 1.0, cell.contentView.frame.size.width - 20, 1))
                                      
                                          lineView.backgroundColor = UIColor(red: 170.0/255.0, green: 170.0/255.0, blue: 170.0/255.0, alpha: 1)
                                          cell.contentView.addSubview(lineView)
                                      }
                                      

                                      P/S: 自定义在 willDisplayCell 不是 cellForRowAtIndexPath

                                      【讨论】:

                                        【解决方案29】:

                                        这是我对这个问题的解决方案。插入单元格后,重新加载该部分。如果重新加载整个部分对您来说过于密集,只需重新加载上面和下面的 indexPaths。

                                        [CATransaction begin];
                                        [CATransaction setCompletionBlock:^{
                                            //  Fix for issue where seperators disappear
                                        
                                            [self.tableView reloadSections:[NSIndexSet indexSetWithIndex:0] withRowAnimation:UITableViewRowAnimationNone];
                                        }];
                                        
                                        [self.tableView insertRowsAtIndexPaths:@[ indexPath ] withRowAnimation:UITableViewRowAnimationFade];
                                        
                                        [CATransaction commit];
                                        

                                        【讨论】:

                                          【解决方案30】:

                                          唯一的解决方法:在 tableView 所在的 .m 文件的@implementation 上方编写以下代码行。

                                          @interface UITableViewCell (fixSeparator)
                                          - (void)layoutSubviews;
                                          
                                          @end
                                          
                                          @implementation UITableViewCell (fixSeparator)
                                          
                                          - (void)layoutSubviews {
                                              [super layoutSubviews];
                                          
                                              for (UIView *subview in self.contentView.superview.subviews) {
                                                  if ([NSStringFromClass(subview.class) hasSuffix:@"SeparatorView"]) {
                                                      subview.hidden = NO;
                                                  }
                                              }
                                          }
                                          
                                          @end
                                          

                                          【讨论】:

                                            猜你喜欢
                                            • 2021-12-05
                                            • 2016-02-18
                                            • 1970-01-01
                                            • 1970-01-01
                                            • 2013-10-13
                                            • 1970-01-01
                                            • 1970-01-01
                                            • 1970-01-01
                                            • 1970-01-01
                                            相关资源
                                            最近更新 更多