【问题标题】:UIScrollView scrolling not properUIScrollView 滚动不正确
【发布时间】:2011-03-13 21:09:35
【问题描述】:

我有一个 UIViewController 子类,它的 view 属性设置为 UIScrollView 子类(比如 ProfileScrollView)。现在,我重写了 drawRect: 方法,在该方法中我绘制了大量文本并将 UIButtons 作为子视图放置在文本之间。根据文本数据,我在这个 drawRect: 方法中设置了 scrollView 的 contentSize。现在,当我滚动此视图时,按钮正在滚动,但文本仍然停滞不前。请帮助解决这个问题。谢谢

【问题讨论】:

    标签: iphone uiscrollview drawrect


    【解决方案1】:

    我认为您的问题来自于您使用drawRect: 作为文本的事实。我很确定 CGRect 参数给出的定位是绝对的,而不取决于滚动视图的内容的当前偏移量。

    您是否直接在 UIScrollView 中添加了子视图(按钮和文本)?如果你这样做了,尝试在 UIScrollView 中插入一个简单的 UIView,它将包含所有子视图。应该是这样的:

    -> UIScrollView
       -> UIView
          -> UIButtons
          -> Text
          -> ...
    

    所以drawInRect: 将在包含 UIView 的绝对位置中绘制文本,而 UIScrollView 将使 UIView(及其所有内容)滚动。

    【讨论】:

    • 感谢您的回答。我认为,这是所需的解决方案。但是为什么它不滚动文本,因为我已经覆盖了 drawRect: of scrollView?
    • 你试过了吗,它有效吗?因为我在发布答案后有一些疑问。但我猜原因是您使用 NSString 的 drawInRect 或 drawAtPoint 绘制文本,它们将文本放置在绝对位置。 UIButton(和其他 UIViews)相对于它们的 superview 放置,因此 UIScrollView 可以根据用户滚动的位置改变它们的位置。
    • 是的,您的解决方案有效。但是,关于我以前的方法,我在 drawRect: 中放置了一个断点,当我滚动 scrollView 时,drawRect: 没有被调用。所以这意味着它不是在同一个绝对点一次又一次地绘制字符串,而是在一个常量视图(不是滚动视图)中绘制它。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-12-13
    • 1970-01-01
    • 2013-11-15
    • 2013-07-02
    相关资源
    最近更新 更多