4

私は tvOS アプリを作成しており、いくつかのボタンで視差画像を使用したいと考えています。ドキュメントから:

アプリに視差画像を組み込むには:

  1. UIImage オブジェクトを作成します。
  2. 画像が App Bundle に含まれているかどうか、または画像をダウンロードしたかどうかに応じて、画像の読み込み方法が異なります。
    • バンドル - imageNamed: を使用して画像を読み込みます。
    • ダウンロードしたファイル - imageWithContentsOfFile: を使用して画像を読み込みます。
  3. 読み込まれた画像を使用して、新しい UIImageView オブジェクトを作成します。
  4. UIImageView が別のビューの一部である場合は、UIImageView でadjustsImageWhenAncestorFocused を YES に設定します。

私はそれがそこにあることを知っていますが、ホーム画面のアプリアイコンのようUIImageViewに、同じ効果が起こることを望んでいました.UIButton

アートワークを作成し、アセット カタログにスタックを作成し、画像を でロードしましたimageNamed:UIButton、視差画像のように動作しません。ホーム画面のアイコンのように揺れません。平面的なイメージにしか見えません。

UIButtonをホーム画面のアプリ アイコンのように動作させるために有効にする必要があるものは他にありますか?

UIButton* quitGame = [[UIButton alloc] initWithFrame:rectWithNewX(playAgain.frame, 985)];
[quitGame setImage:[UIImage imageNamed:@"quit.lsr"] forState:UIControlStateNormal];
[quitGame setAdjustsImageWhenHighlighted:YES];
fadeIn(quitGame, self.view, 0.5);
4

3 に答える 3

1

ファイルまたはプリコンパイル済み LSR を設定するときに問題が発生しました。

Asset Catalog -> New Apple TV Image Stack を使用して XCode Asset Catalog で LSR を作成し、PNG をドラッグしてから、Interface Builder またはこれを使用して画像を設定します。

-(void) setLsr:(UIButton *)button lsrNamed:(NSString *)lsr {
    [button setAdjustsImageWhenHighlighted:YES];

    UIImageView *biv = [[UIImageView alloc] initWithFrame:CGRectMake(0, 0, button.frame.size.width, button.frame.size.height)];
    [biv setImage:[UIImage imageNamed:lsr]];
    [biv setAdjustsImageWhenAncestorFocused:YES];
    [button addSubview:biv];
}
于 2015-09-23T12:24:35.830 に答える
1

デビッドの答えに関して、視差効果ボタンを作成するための簡単なSwiftメソッドを作成しました:

func createParallaxButton(button: UIButton, imageNamed: String) {
        button.adjustsImageWhenHighlighted = true
        let buttonBg = UIImageView(image: UIImage(named: imageNamed))
        buttonBg.adjustsImageWhenAncestorFocused = true
        buttonBg.frame = button.bounds
        button.addSubview(buttonBg)
    }
createParallaxButton(myButton, imageNamed: "myButtonimage.lsr")
于 2015-11-27T17:47:00.090 に答える