2011-11-14 24 views
23

Tôi đang tùy chỉnh UISlider cho ứng dụng của mình. Tôi muốn thanh trượt nằm theo chiều dọc, nhưng mặc định UISlider nằm ở hướng nằm ngang. Tôi không thể tìm cách thay đổi hướng của UISlider.Làm cách nào để thay đổi UISlider thành Dọc?

Tôi làm cách nào để tạo thanh trượt dọc trong XCode?

Trả lời

49

Theo mặc định, UISlider nằm ngang (-). Nếu bạn muốn làm cho nó theo chiều dọc (|) thì bạn phải làm điều này theo chương trình, có lẽ với một CGAffineTransform. Ví dụ, bạn có thể thêm đoạn mã này để viewDidLoad hoặc bất cứ nơi nào bạn cho là thích hợp:

CGAffineTransform trans = CGAffineTransformMakeRotation(M_PI_2); 
slider.transform = trans; 
+0

Xin chào công việc của CNTT nhưng một vấn đề mà tôi muốn phần trên là xuống phần là trên nắm –

+1

hardik, chỉ cần đảo ngược luân phiên. tức là 'CGAffineTransformMakeRotation (-M_PI_2)' – izzy

2

Trong trường hợp bạn đang sử dụng bố trí tự động:

Trong viewDidLoad của bạn, hãy thử:

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

Nó không làm việc với các ràng buộc, vì vậy mẹo là loại bỏ các ràng buộc cho uislider của bạn. Bạn có thể phải định lại kích thước bằng tay bằng cách đặt thuộc tính khung của nó.

1

Tôi đã có một vấn đề với:

CGAffineTransform trans = CGAffineTransformMakeRotation(M_PI_2); 
slider.transform = trans; 

vì tôi đã có mã trong phương pháp viewDidLoad. Thay vào đó, tôi đặt mã trong ViewDidAppear và nó hoạt động tốt.

Chỉnh sửa: không cần phải ở trong ViewDidAppear, ViewDidLoad cũng hoạt động tốt (thậm chí tốt hơn). Bạn có thể tắt tự động thay đổi kích thước hoặc đặt ràng buộc cho thanh trượt bạn đang xoay để kích thước không thay đổi sau khi xoay.

Các vấn đề liên quan