2011-07-30 31 views
6

tôi phải làm điều gì đó sai, nhưng không biết làm gì ..UIView setFrame vấn đề

tôi cố gắng thêm một subview với mã này:

subMenuView = [[UISubMenuViewMainController alloc] init]; 

[subMenuView.view setFrame:CGRectMake(10,0,990,100)]; 

subMenuView.view.backgroundColor = [UIColor whiteColor]; 

[self.view addSubview:subMenuView.view]; 

Tôi muốn quan điểm của tôi là tại (10,0) và có 990/100 rộng/chiều cao

nhưng tôi không nhận được kết quả mong đợi

Hãy để tôi nếu tôi là sai, Nếu tôi muốn một cái nhìn vuông 10x10 tại trung tâm tôi phải thêm dòng sau:

[subMenuView.view setFrame:CGRectMake(512,384,10,10)]; 

Đó không phải là những gì tôi nhận được, vị trí chính xác, nhưng chiều rộng/chiều cao sai, ý tưởng nào?

+0

http://stackoverflow.com/questions/18850871/cgrectmake-is-not-working-with-uiview –

Trả lời

7

vấn đề cố định bằng cách thiết lập

self.view.autoresizesSubviews = NO; 
0

Mã này hơi độc đáo, nhưng tôi sẽ nguy hiểm khi đoán đó là vì bạn đang đặt khung của khung nhìn trước khi thêm nó làm chế độ xem phụ. Do đó vị trí của subview có thể bị thay đổi bởi layoutSubviews trước khi bạn nhìn thấy nó.

Vì vậy, hãy thử đặt dòng mã thứ hai cuối cùng và xem điều đó có thực hiện được không.

+0

Tôi nhận được chính xác cùng một vấn đề với setFrame và kết thúc của đoạn mã –

+0

Tôi không undestand vì tôi m thêm một rất nhiều điều khiển khác (UIButton) với phương pháp này trước và tất cả các công trình hoàn hảo. –

-1

Hãy thử sử dụng phao nổi thay vì ints:

[subMenuView.view setFrame:CGRectMake(10,0,990,100)]; 

tới:

[subMenuView.view setFrame:CGRectMake(10.0f,0.0f,990.0f,100.0f)]; 
+2

cùng một vấn đề, tôi nghĩ rằng GCC có thể cast int của tôi để nổi tại thời gian biên dịch withtout bất kỳ vấn đề –

10

nếu bạn sử dụng autolayout, các setFrame cuộc gọi không có sử dụng, thử gọi setTranslatesAutoresizingMaskIntoConstraints trước setFrame

+4

thiết lập để YES hoặc NO? Tốt hơn nên cung cấp ví dụ – Raptor

+2

Bạn nên đề cập đến những gì nó nên được đặt thành. – ge0rges

+3

Đặt nó thành YES làm việc cho tôi. – Nerrolken