2

iPhone アプリにカスタム ビューがあります。条件が満たされると、画面が暗くなり、ユーザーにいくつかの入力フィールドが表示されます。

メインコントロールを無効にして画面を「暗く」しても問題はありませんが(アルファ= 0.6のUIViewのみ)、この上に表示しているコントロールには常にある程度の透明度があるように見えます( UIButton)、コントロールのアルファを 1.0 に設定し、不透明 = YES に設定した場合でも。ボタンとオーバーレイの間に不透明なレイヤーを追加してみましたが、まだ部分的に透明です。

参考:(iOS 6.1)

UIView * overlay = [[UIView alloc] initWithFrame:parentView.frame];
overlay.backgroundColor = [UIColor blackColor];
overlay.alpha=0.6;

UIButton * button = [UIButton buttonWithType:UIButtonRoundedRect];
button.backgroundColor = [UIColor whiteColor];
button.alpha = 1.0;
button.opaque = YES;
[button setTitle:@"done" forState:UIControlStateNormal];
[button setFrame:CGRectMake(0.0,0.0,44.0,44.0)];

[overlay addSubview:button];
[parentView addSubview:overlay];

上記のコードでもボタンは透明です。ボタンを不透明にする理由と方法を知っている人はいますか?

4

2 に答える 2

1

不透明な機能を使用することをお勧めします。パフォーマンスが向上します。これがベストプラクティスです。

  • IBを使用してボタンを不透明にする: 目的のボタンを選択し、[ユーティリティ]右側のバーで [属性インスペクター] に移動し、[ビュー]セクションで [不透明]をマークし、背景を変更することを忘れないでください。

  • その後、UIButton 内のラベルの opaque をプログラムで変更する必要があります。

    yourButtonOutlet.titleLabel.opaque = true;
    yourButtonOutlet.titleLabel.backgroundColor = [UIColor *YOUR DESIRED COLOR*];
    

opaque を使用することは、レンダリングを高速化するためにAppleによって推奨されていることを理解してください。

于 2015-08-11T09:03:51.337 に答える