是否可以垂直而不是水平设置UISwitches和UISliders?
答案 0 :(得分:11)
正如Caleb所说,它可能违反了指南。但我不确定。
如果你真的想改变这里是一个样本,
urSlider.transform=CGAffineTransformRotate(urSlider.transform,270.0/180*M_PI);
上面的代码会将滑块位置从水平变为垂直。这样就可以为UISwitch做。
答案 1 :(得分:8)
我希望也这样做。来自Apple Developer Site iOS UI Element Usage Guidelines:
滑块
外观和行为
滑块由轨道和拇指(用户可以滑动的圆形控件)和可选图像组成,用于传达右侧和左侧值的含义。当人们沿着滑块拖动拇指时,值或过程会不断更新并显示在轨道中。
准则
使用滑块为用户提供对他们可以选择的值或当前进程操作的细粒度控制。
如果适用,请自定义滑块的外观。例如,您可以执行以下任何操作:
水平或垂直显示滑块。
设置滑块的宽度以适应应用的用户界面。
定义拇指的外观,以便用户一眼就能看到滑块是否处于活动状态。
提供图像以显示在滑块的两端,以帮助用户了解滑块的作用。通常,这些自定义图像对应于滑块控制的值范围的最小值和最大值。例如,控制字体大小的滑块可以在最小端显示非常小的字符,在最大端显示非常大的字符。
为轨道定义不同的外观,具体取决于它所在的拇指的哪一侧以及控件所处的状态。
似乎没有禁止更改开关,步进器和分段控件的禁令。但是,似乎没有为这些控件明确授予权限。
答案 2 :(得分:3)
虽然修改标准iOS控件(如UISlider或UISwitch)并不是一个好主意,但编写自己的自定义UIControl非常容易。见Mike Ash的"Diagonal Slider"帖子
答案 3 :(得分:2)
我只是尝试使用CGAffineTransformation(设置为90度)垂直使用UISlider ..但它不起作用。它可以工作到45度。所以我的猜测是UISlider不能检测垂直手指滑动。
答案 4 :(得分:0)
制作滑块垂直尝试
UISlider *slider = [[UISlider alloc] initWithFrame:CGRectMake(200, 270, 160, 30)];
CGAffineTransform sliderRotation = CGAffineTransformIdentity;
sliderRotation = CGAffineTransformRotate(sliderRotation,-(M_PI / 2));
slider.transform = sliderRotation;
[self.view addSubview:slider];
答案 5 :(得分:-2)
这些控件没有内置的垂直方向选项。您可以通过应用适当的转换来旋转它们,但如果您希望通过应用商店分发您的应用,则可能不是一个好的计划。请参阅App Store审查指南的第10.3节,该指南告诉您,您可能会因滥用标准控件而遭到拒绝。