当UIScrollView在可见视图之外滚动按钮时更改UIButton textLabel位置
问题描述:
我有一个有趣的场景,我有点想法。我希望有人知道某种“UIButton + FloatingLabel”类别,或者可能只是我忽略的一些东西。当UIScrollView在可见视图之外滚动按钮时更改UIButton textLabel位置
我有一个水平滚动UIScrollView与一堆按钮的各种宽度。我面临的问题是,当UIButton开始滚动到可见视图之外时,textLabel会随之移动(标签在按钮中是左对齐的)。
我想能够检测到这一点,并保持标签“浮动”在其余按钮的视图内,直到整个按钮滚动。
我能想到的最接近的是重写UIScrollView layoutSubviews
并检查每个contentOffset更新的标签视图,但这可能会带来很多按钮的代价。
任何人都可以提供一些指导或几个有用的链接?任何帮助表示赞赏,欢呼!
答
可以实现的一种方法是将子类UIButton
并在该子类中使用自己的标签。然后覆盖UIButton
的drawRect:
方法,根据按钮在物理屏幕上的位置([UIScreen mainScreen]
)更改标签的位置。
希望这有助于。
感谢您的回应,但'drawRect'只会被调用一次(当按钮被显示时)。我可能会开始发送'setNeedsDisplay'垃圾邮件,但我认为这与我在上面描述的'layoutSubviews'方法一样低效。 – rwyland
是的,这是真的。我没有看到任何其他不完整的方式。我说给他们任何一个尝试,看看他们如何表现,你永远不知道! – KDaker
如果你考虑一下,你只需要调用'setNeedsDisplay'来跨越屏幕边缘的按钮,我假设它在任何时候都不是太多? – KDaker