ios - 有什么方法可以使 UISegmentedControl 中的段宽度与内容成正比?

标签 ios objective-c ios9

UISegmentedControl 中的段与内容成比例的情况下,widthForSegmentAtIndexviewDidLayoutSubviews 调用时似乎返回 0。无论如何要获得实际宽度? (我正在使用自动布局。)

如果没有,有什么方法可以得到对应于段的 subview ? segmentedControl.subviews[index] 无法可靠地工作。

如果没有办法做到这一点,是否可以使用 UISegmentedControl 的替代方案?

谢谢!

最佳答案

根据我的测试,无论每个单独的段的文本大小如何,段的宽度似乎总是相等的。

CGFloat segmentWidth = segmentedControl.frame.size.width/segmentedControl.numberOfSegments;

编辑

不幸的是,如果 segmentedControl 使用 apportionsSegmentWidthsByContent,则上述答案无效。在那种情况下,我找不到一种简单的方法来获取段的宽度。

但是,您可以手动获取您感兴趣的片段的文本,然后计算它“应该”多长(取决于您想要两侧的填充量),然后使用该数字并使用 setWidth:forSegmentAtIndex: 方法将段设置为计算出的宽度,然后您就可以确定段的宽度。

关于ios - 有什么方法可以使 UISegmentedControl 中的段宽度与内容成正比?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34954222/

相关文章:

swift - 如何将值从 navigationController 传递到 TabBarController

ios - 如何使枚举符合 Swift 中的可识别协议(protocol)?

ios - 为什么在调用 menuItem 的操作时会再次调用 canPerformAction?

iphone - 限制在 IOS 中使用捏合手势缩放图像的最大比例

ios - 使用地址字符串/地理编码在 map 上的两个注释引脚之间画线。 - objective-c

background - iOS9 startMonitoringSignificantLocationChanges 终止时不启动应用程序?

ios - 调用 ZipZap 的 updateEntries 方法会导致 Swift 崩溃

c# - 检查通知权限是否被授予(Xamarin,iOS)

ios - NSMutableArray 不在图表上显示数据

ios - SFSafariViewController 在移动模式下不打开 url