2014-11-03 26 views
36

Tôi gặp sự cố khi sửa đổi chiều cao UIView khi khởi chạy.Làm cách nào để thay đổi Kích thước UIView?

Tôi phải UIView và tôi muốn một kích thước màn hình * 70 và một để lấp đầy khoảng trống.

đây là những gì tôi có

@IBOutlet weak var questionFrame: UIView! 
@IBOutlet weak var answerFrame: UIView! 
let screenSize:CGRect = UIScreen.mainScreen().bounds 

questionFrame.frame.size.height = screenSize.height * 0.70 
answerFrame.frame.size.height = screenSize.height * 0.30 

Nó không ảnh hưởng đến các ứng dụng trong thời gian chạy. Tôi sử dụng tính năng tự động hoàn thành nhưng tôi chỉ có các hạn chế về lề ...

Tôi có làm sai không?

+2

questionFrame.frame = CGRectMake (0, 0, self.view.frame.width, self.view.frame.height * 0.7) answerFrame.frame = (0, self.view.frame.height * 0.7, self .view.frame.width, self.view.frame.height * 0.3) Có phải thứ gì đó giống như những gì bạn đang theo dõi không? – User4

Trả lời

38

Thông tin cho bạn đây. điều này sẽ hoạt động.

questionFrame.frame = CGRectMake(0 , 0, self.view.frame.width, self.view.frame.height * 0.7) 

answerFrame.frame = CGRectMake(0 , self.view.frame.height * 0.7, self.view.frame.width, self.view.frame.height * 0.3) 
+1

Chỉ cần thử trên xcode 7.3. Để cho CGRectMake() có hiệu lực, UIView (quan điểm của tôi thực sự là một phân lớp từ UIView) cần phải có View-> Mode được đặt thành "Redraw" hoặc "Scale to Fit" và CGRectMake() cần phải ở phương thức drawRect() của lớp con của tôi. Nếu không, định nghĩa kích thước trong bảng phân cảnh sẽ có hiệu lực. – rockhammer

+0

nó là 'xy chiều cao chiều rộng 'cùng một lúc, tốt hơn nên sử dụng' userView.frame.size.height = 10 userView.frame.size.width = 10' – user25

18

Xin chào điều này sẽ mở rộng nếu bạn muốn. Update 2015 Swift 2,0

Tạo file Extends.Swiftthêm mã này (thêm móng nhập khẩu nơi bạn muốn thay đổi chiều cao)

/** 
Get Set x Position 

- parameter x: CGFloat 
by DaRk-_-D0G 
*/ 
var x:CGFloat { 
    get { 
     return self.frame.origin.x 
    } 
    set { 
     self.frame.origin.x = newValue 
    } 
} 
/** 
Get Set y Position 

- parameter y: CGFloat 
by DaRk-_-D0G 
*/ 
var y:CGFloat { 
    get { 
     return self.frame.origin.y 
    } 
    set { 
     self.frame.origin.y = newValue 
    } 
} 
/** 
Get Set Height 

- parameter height: CGFloat 
by DaRk-_-D0G 
*/ 
var height:CGFloat { 
    get { 
     return self.frame.size.height 
    } 
    set { 
     self.frame.size.height = newValue 
    } 
} 
/** 
Get Set Width 

- parameter width: CGFloat 
by DaRk-_-D0G 
*/ 
var width:CGFloat { 
    get { 
     return self.frame.size.width 
    } 
    set { 
     self.frame.size.width = newValue 
    } 
} 

Đối với sử dụng (kế thừa Trong UIView)

inheritsOfUIView.height = 100 
button.height = 100 
print(view.height) 
+0

Không thể đặt độ rộng và vân vân mà không cần Khởi tạo chỉ là một thuộc tính get! – BilalReffas

15

Swift 3 và Swift 4:

myView.frame = CGRect(x: 0, y: 0, width: 0, height: 0) 
20

Điều này có thể đạt được bằng nhiều phương pháp khác nhau trong Swift 3.0 Làm việc trên phiên bản mới nhất tháng Tám - 2017

Trực tiếp giao Chiều cao & giá trị Width cho một cái nhìn:

userView.frame.size.height = 0 

userView.frame.size.width = 10 

Gán CGRect cho Frame

userView.frame = CGRect(x:0, y: 0, width:0, height:0) 

Chi tiết phương pháp:

CGRect (x: điểm X, y: Điểm của Y, width: Chiều rộng của View, height: Chiều cao Xem)

Sử dụng một phương pháp mở rộng cho CGRect

Thêm mã sau phần mở rộng trong bất kỳ tập tin nhanh chóng,

extension CGRect { 

    init(_ x:CGFloat, _ y:CGFloat, _ w:CGFloat, _ h:CGFloat) { 

     self.init(x:x, y:y, width:w, height:h) 
    } 
} 

Sử dụng đoạn mã sau bất cứ nơi nào trong ứng dụng của bạn cho xem để đặt kích thước thông số

userView.frame = CGRect(1, 1, 20, 45) 
0

Bạn có thể làm điều này trong Interface Builder:

1) Control-kéo từ một cái nhìn khung (ví dụ questionFrame) cho Chế độ xem chính, trong cửa sổ bật lên, hãy chọn "Chiều cao bằng nhau".

2) Sau đó đi đến thanh tra kích thước của khung, nhấp vào chỉnh sửa "Bình đẳng chiều cao để giám sát" hạn chế, thiết lập hệ số nhân 0,7 và nhấn trở lại.

Bạn sẽ thấy ràng buộc đó đã thay đổi từ "Chiều cao bằng thành ..." thành "Chiều cao theo tỷ lệ thành ...".

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