2010-03-04 94 views
42

我想把UISlider垂直。我不知道這個,所以請幫助我。如何把UISlider垂直放置?

+3

這種反轉滑塊的影子是這個問題的重複昨天問:http://stackoverflow.com/questions/ 2369926 /如何使我垂直uislider – 2010-03-04 11:59:33

回答

103

你必須做這個programaticaly。假設你UISlider被綁定到一個叫slider變量,在您的viewDidLoad方法添加此代碼ViewController.m:

- (void)viewDidLoad { 

    [super viewDidLoad]; 

    CGAffineTransform trans = CGAffineTransformMakeRotation(M_PI * 0.5); 
    slider.transform = trans; 
} 

讓我知道如果你需要有這方面的更多幫助..

+40

這將minimumValue結束在頂部。使用M_PI * -0.5將minimumValue結束放置在底部。 – 2010-10-28 18:39:04

+0

有用的筆記。這是最常見的情況。感謝chrispix。 – ravinsp 2010-11-01 04:36:57

+2

您還可以使用-M_PI_2 – 2013-07-10 18:33:23

30

作爲的Xcode 4.2,你可以在Interface Builder中做排序

  • 創建一個滑塊
  • 顯示「身份檢查」
  • 添加「用戶自定義運行屬性」
  • 設置關鍵路徑「layer.transform.rotation.z」,類型爲「字符串」(「數字」將不允許使用浮點值)(自Xcode 5以來可能)以及值爲「-1.570795」(-π/ 2)。

不幸的是,它在界面構建器中仍然顯示爲水平。

但是,您可以定位中心,不需要創建自定義類,因此在某些情況下它可能會有用。效果與ravinsp的代碼相同。

+0

其實你可以用逗號(而不是點)將浮點數放入數字。 – user500 2014-02-20 06:52:36

+0

比接受的,基於代碼的答案更清潔,恕我直言。 – user1021430 2015-11-16 22:03:45

4

如果您有自動佈局工作:

在您的viewDidLoad中,嘗試:

UIView *superView = self.sizeSlider.superview; 
[self.sizeSlider removeFromSuperview]; 
[self.sizeSlider removeConstraints:self.view.constraints]; 
self.sizeSlider.translatesAutoresizingMaskIntoConstraints = YES; 
self.sizeSlider.transform = CGAffineTransformMakeRotation(M_PI_2); 
[superView addSubview:self.sizeSlider]; 

它不限制工作,所以關鍵是要去除限制爲您uislider。 您可能需要通過設置其框架屬性來手動調整它的大小。

5

斯威夫特3:

slider.transform = slider.transform.rotated(by: CGFloat(0.5 * Float.pi)) 

//使用1.5如果你想