是否有人可以教我如何在垂直方向而不是水平方向显示UISegmentedControl对象?
答案 0 :(得分:25)
您始终可以修改分段控件的转换。
segmentedControl.transform = CGAffineTransformMakeRotation(M_PI / 2.0);
答案 1 :(得分:21)
为Ben的答案+1,虽然旋转分段控件也会旋转文本内部。从不畏惧!我们只需旋转内部标签,如下所示:
NSArray *arr = [segmentedControl subviews];
for (int i = 0; i < [arr count]; i++) {
UIView *v = (UIView*) [arr objectAtIndex:i];
NSArray *subarr = [v subviews];
for (int j = 0; j < [subarr count]; j++) {
if ([[subarr objectAtIndex:j] isKindOfClass:[UILabel class]]) {
UILabel *l = (UILabel*) [subarr objectAtIndex:j];
l.transform = CGAffineTransformMakeRotation(- M_PI / 2.0); //do the reverse of what Ben did
}
}
}
Swift 2版本:
for view in segmentedControl.subviews {
for subview in view.subviews {
if subview.isKindOfClass(UILabel) {
subview.transform = CGAffineTransformMakeRotation(CGFloat(-M_PI / 2.0))
}
}
}
答案 2 :(得分:4)
此控件仅为水平。来自UISegementedControl文档:
UISegmentedControl对象是一个 水平控制由多个 段,每个段起作用 一个离散的按钮。分段控制 提供紧凑的分组方式 一起控制。
您必须将此作为自定义控件执行此操作。
答案 3 :(得分:1)
更新Bens答案可获得更现代的Swift版本。
segmentedControl.transform = CGAffineTransform(rotationAngle: CGFloat(Double.pi / 2))
注意将值转换为CGFloat并使用更现代的Double.pi(也可以缩短为.pi。
答案 4 :(得分:0)
我在cocoa控件中找到了以下控件,看起来不错。它是一个自定义控件,看起来像是UIControl的子类。
但是如果你问我,我可能会尝试不同的方法,我会创建一个列宽(44px)的tabelview并将其保存为容器中的子项,并可以将其与容器的一个角对齐,自定义单元格并列出我的列表并点击每一行,在内容视图的详细信息视图中加载相应的内容。没试过,会尽快发布结果。