iPhone Autosizing
Ekim 22, 10 Yazan: akınDün yazdığım Rotation konulu yazıda ekranda kullandığınız controllerin “evrilip çevrilme” esnasında kendiliğinden yer ve boyut değiştirdiğinden bahsetmiştim. Bunun anlamı aslında herhangi bir kod yazmanızın gerekmediği idi. Tek yapmanız gereken Size Inspector’da Autosizing bölümünde ilgili controlünüzün ayarlarnı yapmaktı.
Bugün biraz daha detaya inmek istiyorum. Ekrandaki kontroller, telefon yan yatırıldığında veya dikleştirildiğinde, her zaman muntazam bir şekilde yeni ekrana yerleşmeyebiliyorlar. Ekranınızda çok fazla control kullanmışsanız (button,textbox..vs) telefonun duruşu değiştiğinde birbirlerinin üstlerine girebiliyorlar. Bu sorunu ortadan kaldırmak için biraz elinizi kirletip kod yazmanız gerekiyor.
Rotation anında iPhone arka planda (void)willAnimateRotationToInterfaceOrientation methodunu çağırmaktadır. Bu methodu override edip kendi kodunuzu çalıştırabilirsiniz. Kontrolleri yeni ekranda yerleştirmek için Apple’ın sağladığı Core Graphics classını kullanabilirsiniz.
(void)willAnimateRotationToInterfaceOrientation methoduna aşağıdaki kodu eklerseniz ekranınızda butonunuz istediğiniz noktaya yerleşecektir.
if(intOrientation == UIInterfaceOrientationPortrait || intOrientation == UIInterfaceOrientationPortraitUpsideDown)
{
button1.frame = CGRectMake(20,20,125,125);
}
else
{
button1.frame = CGRectMake(150,20,125,125);
}
Ekrandaki controllerin yerini değiştirmek için frame property’sini kullanmamız gerekiyor. intOrientation değişkeni, methodun aldığı bir parametredir ve telefonun yeni pozisyonunu size bildirmektedir.