2011-01-17 7 views
2

を追加したとき、私は私のルートビューコントローラクラスの実装に次のコードを使用していUISegmentedControl UINavigationControllerを中心としません:セグメント化されたコントロールが正しくセンタリングされていないプログラムで

- (void)viewDidLoad 
{ 
    [super viewDidLoad]; 

    NSArray *segmentTextContent = [NSArray arrayWithObjects: 
            NSLocalizedString(@"button1", @""), 
            NSLocalizedString(@"button2", @""), 
            NSLocalizedString(@"button3", @""), nil]; 

    UISegmentedControl *segmentedControl = [[UISegmentedControl alloc] nitWithItems:segmentTextContent]; 
    segmentedControl.selectedSegmentIndex = 0; 
    segmentedControl.autoresizingMask = UIViewAutoresizingFlexibleWidth; 
    segmentedControl.segmentedControlStyle = UISegmentedControlStyleBar; 
    segmentedControl.frame = CGRectMake(0, 0, 400, 30); 

    self.navigationItem.titleView = segmentedControl; 
    [segmentedControl release]; 
} 

、それが右にいくつかのピクセルをシフトしています。面白いのは、右揃えでもないことです。左パディングが中央に配置されないようにしているかのようです。もう1つの面白いことに、この分割されたコントロールをインターフェイスビルダに描画すると、完全に中央に配置されるため、これはプログラム上の問題に過ぎません。

新しい空のアプリでこのコードを試しても同じ結果が得られたので、アプリの中でそれが原因であることはわかりません。

申し訳ありませんが、私はスクリーンショットを投稿したかったが、私は十分評判ポイント;-)

任意のアイデアを持っていませんか?

+0

おそらく左ボタンがありますか?あなたはそれを見ることができないので、明らかかもしれません。 IBに確認してください。 – ughoavgfhw

答えて

0

は、私もやってみました、何の左ボタンがありません:

self.navigationItem.leftBarButtonItem = nil; 
self.navigationItem.backBarButtonItem = nil; 

私が言ったように、それだけではないコードで、IBで動作します。そして、新しいプロジェクトでも失敗します。あなた自身で試してみてください。

私は修正を見つけたようです。幅に指定された400が問題を引き起こしていました。私は300を指定しましたが、今は正しく中心に置かれています。理想的には、ハードコード300ではなく、グローバルな画面幅の値を取得する必要があります。

+0

あなたはこの回答を削除する必要があります(回答ではありません)。この情報で元の質問を更新してください。 (または@ ughoavgfhwのコメントにあなた自身のコメントを追加するだけで答えることができます。コメントテキストに "@ughoavgfhw"を使用するとコメントが追加されたことを彼に伝えます):-) –

+0

私はそれを削除したいと思います。しかし私はそれをする方法を見ていない。私はそれを編集する方法を見ますが、削除しません。 – bpatrick100