0

InfoViewControllerのビューを次のようにサブビューとしてロードしますMainViewController(.hで宣言):

- (void)viewDidLoad
{
[super viewDidLoad];
infoViewController = [[InfoViewController alloc] initWithNibName:@"InfoViewController" bundle:nil];
mainInfoView = (MainInfoView *)[mainInfoViewController view];
 }

(MainViewControllerは、tableviewcontrollerセルのセグエからプッシュ表示され、ナビゲーションバーがあります。)

これは、InfoViewControllerビューのサイズを設定するためのviewDidLoadにあります。

- (void)viewDidLoad
{
[super viewDidLoad];
self.view.frame = CGRectMake(130, 0, 178, 299);
}

InfoViewControllerのサイズインスペクターで、同じサイズ(178、高さ:299)を設定しました。XIBのInfoViewControllerとStoryboardのMainViewControllerの両方で「UseAutolayout」を無効にしました。

にいくつかのUILabels、UITextViews、UIImageViewsがありInfoViewControllerます。それらは.hのプロパティで宣言され、.mで合成されます。XIBの要素に接続されています。MainViewControllerそれらのコンテンツは、次のようにviewWillAppearで定義されます。

- (void)viewWillAppear:(BOOL)animated {
[super viewWillAppear:animated];
 infoViewController.kategoriLabel.text = [[objArr objectAtIndex:detailIndex] objectForKey:@"Type"];
 }

アプリを実行してこのビューに入ると、ラベル、画像、textViewの一部が突然ランダムな場所に配置されます。これは、一部の要素でのみ発生しています。

私は別のアプリでこれと同じことをしました、そしてそれはシミュレーター(iPhone 4 ver 6,0)とiPhone 5デバイスの両方でうまく動作します、しかしこのアプリではそれは両方でただ厄介になります。アプリを比較すると、ユーティリティや他の場所で何か違うものを見つけることができないようです。

あなたが似たようなことを経験してそれを解決したか、それを引き起こしている可能性があるものを知っているかもしれないなら、私はあなたの答えをいただければ幸いです。ありがとう。

PS。Xcode4.5.1を使用しています

4

1 に答える 1

2

私は別の問題を抱えていましたが、私のブルートフォースの解決はあなたにも役立つかもしれません。私の場合、一連のビューコントローラの最後のアイテムのナビゲーションバーを無効にしたかったのです。ただし、IBではナビゲーションバーを削除できないため、viewWillAppearで手動で削除する必要がありました。ただし、バーが非表示になると、IOSは、IBで定義されていたすべてのボタンとオブジェクトを(現在は非表示になっている)ナビゲーションバーの高さでシフトアップしました。

私はコントローラーのviewWillAppearで以下に頼りました。(viewWillAppearでこれを試したとき、オブジェクトは目に見えてシフトする傾向がありました)

-(void) viewWillAppear:(BOOL)animated
{
    //turn off nav bar
    [[self navigationController]setNavigationBarHidden:YES animated:NO];

    //correct positions of items that shift when the bar disappears
    myThing.center = CGPointMake(desired_x_coord, desired_y_coord);
    myOtherThing.center = CGPointMake(desired_x_coord2, desired_y_coord2);
    ...etc...

    //don't forget to call the base class
    [super viewWillAppear:animated];
}

迷惑ですが、うまくいきました。移動しているオブジェクトのソースが見つからない場合は、viewWillAppearを使用してオブジェクトの位置を強制してみてください。

于 2012-11-27T02:46:10.257 に答える