【发布时间】:2011-12-06 01:16:30
【问题描述】:
我想用一个子类修改 UISegmentedControl 以删除圆角。我似乎无法设置cornerRadius。使 SegmentedControl 比屏幕更宽(因此“切掉”角落)不是一种选择,因为我有 4 或 5 个段,然后它们的大小会有所不同。
有没有办法做到这一点?
谢谢
【问题讨论】:
标签: ios ios5 uisegmentedcontrol cornerradius
我想用一个子类修改 UISegmentedControl 以删除圆角。我似乎无法设置cornerRadius。使 SegmentedControl 比屏幕更宽(因此“切掉”角落)不是一种选择,因为我有 4 或 5 个段,然后它们的大小会有所不同。
有没有办法做到这一点?
谢谢
【问题讨论】:
标签: ios ios5 uisegmentedcontrol cornerradius
要制作角正方形,请使用以下代码:
segmentContrl.layer.borderColor=*anycolor*.CGColor;
segmentContrl.layer.cornerRadius = 0.0;
segmentContrl.layer.borderWidth = 1.5f;
【讨论】:
如果第一个和最后一个片段的“裁剪”部分存在问题,则另一种方法可能是裁剪整个第一个和最后一个片段(您已将其制作为虚拟未使用的片段)。这样,您仍然可以为每个段保持一个共同的大小。
【讨论】:
只需使用内置的自定义方法并为每个段状态设置背景图像。这将完全覆盖边界。如果背景图像是方形的,那么您的分段控件将显示为方形。对您要自定义的每个段状态使用以下代码。
[segmentedControl setBackgroundImage:[UIImage imageNamed:@"square-background-image-selected"]
forState:UIControlStateSelected
barMetrics:UIBarMetricsDefault];
【讨论】:
您可以设置线段的宽度(使用setWidth:forSegmentAtIndex:),这样您就可以轻松地使左右两端的线段比其他线段更大(比如大 10 像素),然后您可以从任一端裁切 10 像素并获得正方形角落。您不必使其大于屏幕宽度,而是将其放在 UIView 中并使用它来裁剪末端。
另一方面,您可以使用 UIControl 中的一组自定义 UIButton 来制作您自己的分段控件。
【讨论】:
在界面生成器中完成此操作的另一种方法:
拖一个 UIView 对象到你的 UIViewController,这可能是你 UIView 的一个子视图。
将 UISegmentedControl 拖动为 UIView 的子视图。分段控件现在应该在您的 UIViewController 对象列表中缩进。 (见下面的截图)。
调整 SegementedControl 的大小,使其框架位于 UIView 对象的边界之外。在我的例子中,我将 SegementedControl 的框架设置为 X = -10,并将 SegementedControl 的宽度添加了 +20,以便分段控件的总宽度比 UIView 对象大 20。 (希望下面的屏幕截图有所帮助)。
我还为 UIView 对象和 SegmentedControl 调整了以下设置: UIView:选中 Clip SubViews,取消选中 AutoResize Subviews。 SegementedControl:取消选中 Clip SubViews,取消选中 AutoResize Subviews。
【讨论】: