Ios 当UIScrollView将按钮滚动到可见视图之外时,更改UIButton文本标签位置

Ios 当UIScrollView将按钮滚动到可见视图之外时,更改UIButton文本标签位置,ios,uiscrollview,uibutton,uilabel,Ios,Uiscrollview,Uibutton,Uilabel,我有一个有趣的场景,我一直在思考这个问题。我希望有人知道某种类型的“UIButton+FloatingLabel”类别,或者可能只是我忽略的一些简单的东西 我有一个水平滚动的UIScrollView,它有一堆不同宽度的按钮。我面临的问题是,当UIButton开始在可见视图外滚动时,textLabel会随之滚动(按钮中的标签是左对齐的) 我希望能够检测到这一点,并保持标签“浮动”在其余按钮的视图中,直到整个按钮滚动离开 我能想到的最接近的方法是覆盖UIScrollViewlayoutSubview

我有一个有趣的场景,我一直在思考这个问题。我希望有人知道某种类型的“UIButton+FloatingLabel”类别,或者可能只是我忽略的一些简单的东西

我有一个水平滚动的UIScrollView,它有一堆不同宽度的按钮。我面临的问题是,当UIButton开始在可见视图外滚动时,textLabel会随之滚动(按钮中的标签是左对齐的)

我希望能够检测到这一点,并保持标签“浮动”在其余按钮的视图中,直到整个按钮滚动离开

我能想到的最接近的方法是覆盖UIScrollView
layoutSubviews
,并在每次contentOffset更新时检查labels视图,但如果使用大量按钮,这可能会非常昂贵


有人能提供一些指导或一些有用的链接吗?感谢您的帮助,干杯

实现这一点的一种方法是将
UIButton
子类化,并在该子类中使用您自己的标签。然后覆盖自定义
ui按钮的
drawRect:
方法,根据按钮在物理屏幕上的位置更改标签的位置(
[UIScreen mainScreen]


希望这有帮助。

谢谢您的回复,但是
drawRect
只会被调用一次(当按钮显示时)。我可以开始滥发
setNeedsDisplay
,但我认为这和我上面描述的
layoutSubviews
方法一样低效。是的,这是真的。我看不出有任何其他方法不是详尽无遗的。我说,试一下他们中的任何一个,看看他们表现如何,你永远不会知道!如果你仔细想想,你只需要调用
setNeedsDisplay
来显示屏幕边缘的按钮,我假设,在任何给定的时间,它们不是太多吗?我可以做一个检查,看看每个UIButton的
x
x+width
坐标是否在UIScrollView的框架之外,然后调用它。我主要关心的是,我正试图将此限制在最低限度,以确保平滑滚动。我会给它一个机会,然后最大限度地释放UIButton,看看会发生什么。