2015-06-07 21 views
12

Đối với ứng dụng tôi đang thực hiện, tôi cần sử dụng các biến để thay đổi kích thước và vị trí của các đối tượng (Nhãn). Tôi đã thử var example = CGRectMake(0, 0, 0, 100), hy vọng nó sẽ bỏ qua các số không (Không thực sự nghĩ rằng nó sẽ mặc dù). sau đó tôi đã cố gắng:Sử dụng các biến trong CGRectMake, Swift, UIkit

var example = 100 
Label1.frame = CGRectMake(20, 20, 50, example) 

Tôi đã thay đổi cú pháp một chút, thêm "" và thay thế CGRectMake với CGRect vv, nhưng không làm việc ... Tôi không có được những gì tôi đang làm sai ở đây ... Cứu giúp!

+0

lưu khung cũ la bel sau đó đặt các giá trị đó thành giá trị không thay đổi ở vị trí mới – cyril

Trả lời

3

CGRectMake mất CGFloat s cho tất cả các đối số của nó. mẫu mã của bạn nên làm việc tốt nếu bạn xác định rằng example được coi là một CGFloat, sử dụng một định danh loại:

  // v~~~~ add this... 
var example: CGFloat = 100 
Label1.frame = CGRectMake(20, 20, 50, example) 

Nếu không, nhanh chóng suy luận kiểu exampleInt, và cuộc gọi đến CGRectMake thất bại, cuz nó không thể lấy một Int như một tham số ...

+5

Câu trả lời này đã lỗi thời. Xem bên dưới. –

1

Vì vậy, có nhiều cách để làm da mèo. Tất cả phụ thuộc vào nhu cầu và yêu cầu của bạn là gì (có lẽ bạn có thể xây dựng một chút về những gì bạn đang cố gắng đạt được?). Nhưng một cách để làm điều đó có thể là thiết lập một biến khi một cái gì đó xảy ra, và sau đó cập nhật khung của nhãn. Nếu bạn đã thêm trình nhận dạng cử chỉ nhấn vào chế độ xem của mình và đã cập nhật nhãn của bạn như vậy:

let myLabel = UILabel() 

override func viewDidLoad() { 
    super.viewDidLoad() 

    let tapGestRecog = UITapGestureRecognizer(target: self, action: "handleTap:") 
    self.view.addGestureRecognizer(tapGestRecog) 
} 

func handleTap(sender:UIGestureRecognizer) { 

    let newXposition = sender.locationInView(self.view).x 
    let newYposition = sender.locationInView(self.view).y 

    myLabel.frame = CGRectMake(newXposition, newYposition, 200, 200) 
} 

Đây chỉ là một ví dụ và cách rất thô sơ. Có nhiều cách khác để làm điều đó, nhưng hy vọng nó sẽ cho bạn một ý tưởng về cách đạt được nó.

0

Swift cho phép cú pháp mà Objective-C không:

var example = 100 
label.frame.size.height = example 

Trong Mục tiêu-C bạn sẽ phải làm điều đó khác nhau:

CGRect frame = label.frame; //Create a temporary rect to hold the frame value 
frame.size.height = example; 
label.frame = frame; 
63

Swift 3 cập nhật

let rect = CGRect(x: 0, y: 0, width: 100, height: 100) 
+1

Cảm ơn người đàn ông! Đã cứu tôi một thời gian. :) – Wouter125

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