このアプリをiOS 4以降に展開しようとしているため、自動レイアウトを使用するのではなく、プログラムでUIViewのレイアウトを変更しようとしています。基本的に、画面の高さを 455 (iPhone 5) にしてビューを設定します (実際の画面サイズは 568 ポイントですが、下部にタブ バーがあるので、IB に表示されているサイズはそれを考慮に入れていると想定しています) )。すべてのボタンとラベルの起源を長い画面サイズと比較して記録し、プログラムで好みの方法に変更しました。問題は、ボタンとラベルの一部が画面からはみ出していることです。そのため、それらを境界内に保つために何らかの変換を実行する必要があると思いますが、何がわからないのですか。以下に添付されている写真を参照してください。
ボタンとラベルの起点を変更するために initMethod が呼び出される前の
画像 起点を変更するために initMethod が呼び出された後の画像
古い画面サイズの XCode でのビュー プロパティ
これがビューの外観です。ボタンを動かして、それぞれの由来を記録しました。
viewWillAppear の私の init メソッドの写真。ラベルのフレームがゼロになっていることに注意してください。
使用したコードは次のとおりです。
-(void)initView
{
CGRect screenBounds = [[UIScreen mainScreen] bounds];
if (screenBounds.size.height == 480) {
//iphone 4,4s
//done
}else if(screenBounds.size.height == 568) {
//iphone 5
CGRect frame;
//Static Professor label
frame = [staticProfessorLabel frame];
frame.origin.x = 48;
frame.origin.y = 218;
[staticProfessorLabel setFrame:frame];
//Professor Label
frame = [professorLabel frame];
frame.origin.x = 192;
frame.origin.y = 218;
[professorLabel setFrame:frame];
//show button
frame = [showProfessorButton frame];
frame.origin.x = 67;
frame.origin.y = 258;
[showProfessorButton setFrame:frame];
//clear proff button
frame = [clearProfessor frame];
frame.origin.x = 240;
frame.origin.y = 258;
//note label
frame = [bottomNote frame];
frame.origin.x = 160;
frame.origin.y = 310;
[bottomNote setFrame:frame];
//search button
frame = [searchButton frame];
frame.origin.x = 158;
frame.origin.y = 424;
[searchButton setFrame:frame];
//spinner
frame = [actIndicator frame];
frame.origin.x = 266;
frame.origin.y = 424;
[actIndicator setFrame:frame];
}
}
また、viewDidLoadで呼び出すと、ボタンとラベルのいずれも有効なフレームを提供しないため、viewDidAppearメソッドでこれを呼び出しています(まだ初期化されていないと思います)。