垂直UISliders和UISwitches

是否可以垂直而不是水平地设置UISwitches和UISliders?

虽然修改UISlider或UISwitch等标准iOS控件并不是一个好主意,但编写自己的自定义UIControl非常容易。 请参阅Mike Ash的“Diagonal Slider”文章

就像迦勒说的那样,这可能违反准则。但我不确定。

如果你真的想改变这里是一个样本,

urSlider.transform=CGAffineTransformRotate(urSlider.transform,270.0/180*M_PI); 

上面的代码将把滑块的位置从水平变成垂直。像这样,你可以做UISwitch。

我期待着也这样做。 从Apple开发人员站点iOS UI元素使用指南 :

滑块

外观和行为

一个滑块由一个轨道和一个拇指(用户可以滑动的圆形控件)以及可选图像组成,用于传达左右值的含义。 当人们沿着滑块拖动拇指时,值或过程不断更新并显示在轨道上。

方针

使用滑块可以让用户对他们可以select的值或当前进程的操作进行细化控制。

如果合适,自定义滑块的外观。 例如,您可以执行以下任一操作:

水平或垂直显示滑块。

设置一个滑块的宽度,以适应您的应用程序的用户界面。

定义拇指的外观,以便用户一眼就能看到滑块是否处于活动状态。

将图像显示在滑块的两端,以帮助用户了解滑块的function。通常,这些自定义图像对应于滑块控制的值范围的最小值和最大值。 例如,控制字体大小的滑块可以在最小值处显示非常小的字符,在最大值处显示非常大的字符。

为轨道定义不同的外观,具体取决于它所在的拇指的哪一侧以及控制所处的状态。


似乎没有禁止更换开关,步进器和分段控制器。 但是,权限似乎没有被明确授予这些控制。

我只是尝试垂直使用UISlider与CGAffineTransformation(设置为90度)..但它不起作用。 它的工作,直到45度。 所以我的猜测是UISlider不是用来检测垂直手指滑动的。

制作滑块垂直试试这个

 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]; 

这些控件没有内置的垂直方向选项。 您可以简单地通过适当的转换来旋转它们,但如果您希望通过应用程序商店分发您的应用程序,则可能不是一个好计划。 请参阅App Store评论指南的第10.3节,该指南告诉您由于误用标准控件而遭受拒绝。