0

私はiOSにかなり慣れていません。アプリケーション全体で特定の UIView クラスを頻繁に使用するプロジェクトに取り組んでいます。このクラスは、背景色に透明性を持たせる単純な画像です。これはこれまでのところうまくいきます。このクラスは、単独の UIView として存在する場合もあれば、ボタンのサブビューとして存在する場合もあります。

この UIView をサブビューとして UIButton に追加すると、UIView のコンテンツ全体がフル サイズで表示されますが、自動レイアウトの使用がオフになっていない限り、ボタンのクリック可能な領域は xib で定義されたサイズのままです (手動で試してもボタンのフレームを設定します。)

UIButton をプレースホルダーとして xib に配置し、後で初期化された UIView のオーバーレイ画像のサイズに基づいてサイズ/クリック可能領域を定義したいと思います。

これは可能でしょうか、それとも xib ファイル/自動レイアウトの使用法を誤解していますか?

ViewDidLoad の下に...

- (void)viewDidLoad{

    [theButton addSubview:_theView];
    CGRect buttonFrame = theButton.frame;
    buttonFrame.size = CGSizeMake(_theView.getSize.width,_theView.getSize.height);
    [theButton setFrame:buttonFrame];
}

ただし、setFrame を呼び出す前後にボタン情報を出力すると、フレームは同じサイズのままです。

(「_theView.getSize」は私が追加したことに注意してください)

4

1 に答える 1

6
  1. Autolayout では、ビューには にフレームがありませんviewDidLoadviewWillAppear:またはでコードを試してくださいviewDidLayoutSubviews
  2. Autolayout では、フレームを設定しません。代わりに、制約を編集します。フレームの設定は、レイアウトが制約によって記述されたものに戻る次のレイアウト パスまで機能します。
  3. サブビューに合わせてボタンのサイズを変更するには、次のようなことを (ビジュアル形式の言語で) 試すことができます:|-[theView]-|ただし、xib からどのような制約が設定されているかによって異なります。
于 2013-05-06T19:47:50.213 に答える