2015-02-19 14 views
8

Làm cách nào để tạo UIView ở giữa theo chiều ngang và 30px từ đầu bộ điều khiển chế độ xem bằng cách sử dụng CGRectMake?Làm cách nào để xoay ngang UIView?

var draggableView: DraggableView = DraggableView(frame:CGRectMake(0 , 30, 260, 260)) 
draggableView.center = center 

Trả lời

15

Hãy thử:

let size = 260 
let screenWidth = self.view.frame.size.width 

let frame = CGRectMake((screenWidth/2) - (size/2), 30, size, size) 
let draggableView = DraggableView(frame: frame) 

self.view.addSubview(draggableView) 
10

Bạn không thể tập trung một cái nhìn trong một bộ điều khiển xem, bởi vì một bộ điều khiển xem không phải là một cái nhìn và không có một hệ tọa độ.

Bạn có thể căn giữa chế độ xem tương ứng với chế độ xem khác. Có lẽ bạn muốn đặt trung tâm draggableView tương ứng với chế độ xem của bộ điều khiển chế độ xem. Giả sử self là bộ điều khiển xem, và draggableView sẽ là một subview trực tiếp xem bộ điều khiển quan điểm của:

var draggableView: DraggableView = DraggableView(frame:CGRectMake(0 , 30, 260, 260)) 
self.view.addSubview(draggableView) 
draggableView.center = self.view.center 
3

Mặc dù Rob Mayoff là đúng, nó có thể là đáng giá để xem xét trung khung hình của bạn trong viewWillLayoutSubviews, được gọi là khi xoay thiết bị. Bạn cũng có thể sử dụng các thuộc tính center.xcenter.y của trung tâm để căn chỉnh dựa trên trục. Không cần phải tự gọi mình trong trường hợp này.

override func viewWillLayoutSubviews() { 
    draggableView.center = view.center 
} 
0

Đây là một phần mở rộng nhỏ gọn cho trung một cái nhìn hoặc đối tượng:

extension CGPoint { 
    static var Center: CGPoint { 
     return CGPoint(x: UIScreen.main.bounds.maxX/2, y: UIScreen.main.bounds.maxY/2) 
    } 
} 

Và sau đó sử dụng nó như thế này:

textField.center = CGPoint.Center 
0

activityindicater là quan điểm mà bạn muốn đặt ở trung tâm

self.activityindicater.center = self.baseView.center

14

Swift 3;

subView.center.x = view.center.x 
+1

này nên là câu trả lời chấp nhận. Đơn giản và sạch sẽ. –

+0

đúng điều này phải là câu trả lời được chấp nhận. –

1

Tôi đang sử dụng thư viện 'MMMaterialDesignSpinner' và tạo ra một chỉ số hoạt động tùy chỉnh trong tâm chế độ xem. Nó hoạt động chính xác, bạn có thể thay đổi tên chế độ xem tùy chỉnh của mình như 'DraggableView'. Tôi hy vọng nó có thể sử dụng được bởi bạn. Mã này được bổ sung vào viewDidLoad chức năng trong nhanh chóng 3.

var loader = MMMaterialDesignSpinner() 
let size:CGFloat = 40.0 
let screenWidth = self.view.frame.size.width 
let screenHeight = self.view.frame.size.height 

loader = MMMaterialDesignSpinner(frame: CGRect(x: (screenWidth/2) - (size/2), y: (screenHeight/2) - (size/2), width: size, height: size)) 

loader.tintColor = UIColor.blue 
loader.lineWidth = 4.0 
loader.lineCap = kCALineCapRound; 
view.addSubview(loader) 
0

Swift 3:

// in view controller, in viewDidLoad function 
let draggableView = DraggableView(frame: CGRect(x: 0, y: 30, width: 260, height: 260))  
draggableView.frame.origin.x = view.bounds.midX - draggableView.bounds.midX 
Các vấn đề liên quan