UISlider边界和框架宽度返回不正确的值

时间:2018-02-20 02:22:35

标签: ios objective-c autolayout uislider

我已经将UISlider子类化,以便为它添加一些滴答。

要获得滑块的宽度,请使用:

self.bounds.size.width

另外,self.frame.size.width总是返回相同的东西。

麻烦的是,如果我根据这个值给我的剔除,那么外部刻度始终会在屏幕的边缘结束。请参阅屏幕截图。

Wide View

非常欢迎任何帮助或见解!

1 个答案:

答案 0 :(得分:1)

请尝试使用JsConfig.IncludePublicFields = true; 。这将为您提供轨道的实际框架。如果您有滑块的约束和/或其他设置,最好在trackRectForBounds中获取矩形。

layoutSubviews

协作更新以实现可行的解决方案:
如果您设置了约束,请检查它们是否仍然是正确的尺寸,如果没有,您将不得不更新一些常量,然后调用[self layoutIfNeeded]再次执行此操作。但要小心,每次这样做会导致无限循环。