UIView mengubah lebar setelah beralih orientasi ke lanskap?

Saya mendapat UIView dengan 2 subview. UIView disetel ke UIViewAutoresizingFlexibleWidth. Sekarang ketika memasuki layoutSubviews ia mengubah ukuran bingkai subview relatif terhadap UIView seperti:

rect.size.width  = self.frame.size.width - rect.origin.x - textLabel.frame.origin.x;

Namun masalah terjadi pada mode lanskap karena dalam mode potret self.frame.size.width (dan dalam hal ini batasnya) merespons 768 di awal dan 788 setelah selesai berputar. Artinya ketika diputar sepertinya bertambah 20 piksel yang saya asumsikan sebagai status bar.

Ketika saya membuat kode keras 768 semuanya berfungsi seperti yang diharapkan. Tapi tentu saja aku tidak menginginkan hal itu. Saya dapat menyimpan status awal ke dalam var dan menggunakannya, tetapi menurut saya itu bukan cara yang tepat untuk melakukannya.

Adakah yang punya solusi?


person Mark    schedule 16.11.2010    source sumber


Jawaban (1)


Salam,

dalam lamaran saya, saya menghadapi Masalah yang sama. Untuk mengatasinya saya cukup menggunakan didRotateFromInterfaceOrientation:metode untuk mengubah ukuran Tampilan saat perangkat diputar.

self.view.frame = CGRectMake(0,0,self.view.bounds.size.width,self.view.bounds.size.height);

Semoga ini bisa membantu.

person Sniffer    schedule 16.11.2010