アプリケーションをios 6にアップデートしたいのですが、iphone 4とiphone 5の両方でフレームサイズを快適に設定するにはどうすればよいですか?
5 に答える
[画面サイズの計算] を使用して、次の方法を使用するようにビューの高さを調整できます
+(CGFloat)heightOf:(CGFloat)heightValue{
CGRect applicationFrame = [[UIScreen mainScreen] applicationFrame];
//NSLog(@"applciation Frame height = %f",applicationFrame.size.height);
CGFloat heightRatio = (heightValue/480)*100;
CGFloat height = (applicationFrame.size.height * heightRatio)/100;
return height;
}
それから私はのように使用しています
UIView *view = [[UIView alloc]initWithFrame:CGRectMake(0,[Height heightOf:385], 320, 220)];
など。返信ありがとうございます
この状況を処理する方法は複数あります。
1> それらの 1 つは、自動サイズ変更を適切に使用することです。
2>もう 1 つの方法は、新しい自動レイアウト機能を使用することですが、これも iOS 6 でのみサポートされます。
3>iphone 4 と iphone 5 用のビューごとに個別の nib を作成でき、実行しているデバイスに応じて、使用する .xib ファイルを切り替えることができます。
現在の最善の方法は、自動サイズ変更を適切に使用することです。
詳細については、これらを通過できます
2> iPhone4 と iPhone5 の両方の画面解像度をサポートする最良の方法は何ですか? - iOS6のみ自動レイアウト
iPhone5およびその他のデバイスの次のコードチェック
#define IS_IPHONE ( [[[UIDevice currentDevice] model] isEqualToString:@"iPhone"] )
#define IS_IPOD ( [[[UIDevice currentDevice ] model] isEqualToString:@"iPod touch"] )
#define IS_HEIGHT_GTE_568 [[UIScreen mainScreen ] bounds].size.height >= 568.0f
#define IS_IPHONE_5 ( IS_IPHONE && IS_HEIGHT_GTE_568 )
AutoLayout はうまくいきませんでした。私のアプリには、均等に配置する必要がある要素がいくつかあります。
クイック フィックス ソリューション (お勧めできません) は、画面の高さのチェック時に座標を個別に割り当てることです。(ところで、これは良いチュートリアルです。残念なことに、Apple はまだ IOS 用に実質的なものを何も考え出していません)。
画面に複数の要素がある場合は、それらを個別に再配置する必要があると思います
CGFloat height = [UIscreen mainScreen].bounds.size.height;
if(height==568.00){
self.imageName.frame = CGRectMake(x,y,width,height);
...
}
ウィンドウの中央に表示されるモーダルまたはフローティング画面の場合、これを試すことができます:
self.imgBadgeArea.frame = CGRectMake(self.view.bounds.size.width/2- self.imgBadgeArea.bounds.size.width/2, self.view.bounds.size.height/2 - self.imgBadgeArea.bounds.size.height/2, self.imgBadgeArea.bounds.size.width, self.imgBadgeArea.bounds.size.height);
3.5インチと4インチの両方で機能します。
デバイスタイプのリンクを確認するか、ビューフレームがiPhone 4/4sの通常のものよりも大きいかどうかを確認してから、フレームのサイズを変更できます
注:私は2番目の方法を使用していますが、それは仕事です