【问题标题】:Adding a vertical rule (border) between two UIScrollViews在两个 UIScrollView 之间添加垂直规则(边框)
【发布时间】:2011-01-13 23:02:05
【问题描述】:

我有两个 UIScrollView 实例,我想在它们之间画一条垂直线(不是 100% 的高度,更像是 80%)。我怎样才能做到这一点?

【问题讨论】:

    标签: iphone ipad ios


    【解决方案1】:

    使用核心图形。将两个 UIScrollView 嵌套在另一个视图中,并覆盖父级的 drawRect 方法。有关绘图的更多详细信息,请参阅 Apple 的 UIView documentation,有关绘图的更多信息,请参阅 Core Graphics Context Reference

    - (void) drawRect: (CGRect) rect
    {
        CGContextRef context = UIGraphicsGetCurrentContext();
    
        // Draw divider
        UIGraphicsPushContext(context);
            // Fill the background, this must happen if the view is not opaque.
                if (self.opaque)
                {
                [[UIColor whiteColor ] set];
                CGContextFillRect(context, rect);
                }
    
            [[UIColor grayColor] set];
    
            CGContextSetLineWidth(context, 1);
    
            CGContextBeginPath(context);
            CGContextMoveToPoint(context, rect.size.width * 0.5, 0.1 * rect.size.height);
            CGContextAddLineToPoint(context, rect.size.width * 0.5, 0.9 * rect.size.height);
            CGContextStrokePath(context);
        UIGraphicsPopContext(); 
    }
    

    编辑

    为了解决我的疏忽,我知道没有简单的方法可以在子视图之上绘制。

    可以使用与上述相同的基本视图层次结构来模拟此行为。子类 UIView 以创建不接受任何触摸事件的完全透明的视图。将绘图代码(我在上面的代码中添加了不透明度的条件)放在自定义视图中,然后在视图层次结构的前面插入自定义视图的实例。

    【讨论】:

    • 感谢您的帮助。我试过了,但我没有看到这条线,我猜是因为 UIScrollView 覆盖了它。知道如何解决这个问题吗?
    • 我已经更新了我的答案以解决这个疏忽。我已经测试了更新的解决方案,并且可以确认它会为您提供所需的行为。
    • 嗯,我无法让触摸事件正常工作。你知道如何让透明视图将事件传递给滚动视图吗?
    【解决方案2】:

    视图之间的垂直线也可能只是一个细而高的 UIView(在滚动视图的顶部),具有纯色背景。这意味着您无需担心自定义绘图代码。这也让您可以在 Interface Builder 中进行布局、使用自动调整大小等。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2020-08-03
      • 1970-01-01
      • 2011-02-14
      • 1970-01-01
      • 1970-01-01
      • 2013-09-03
      • 1970-01-01
      相关资源
      最近更新 更多