在UIButton上使用LSR图像



我正在创建一个tvOS应用程序,我想在几个按钮上使用视差图像。来自文档:

将视差图像合并到您的应用程序中:

  1. 创建UIImage对象
  2. 根据图片是否包含在你的应用程序包中或者你是否下载了的形象。
    • 使用imageNamed:.捆绑加载图片
    • 下载的文件-加载图像使用imageWithContentsOfFile:.
  3. 用加载的图片创建一个新的UIImageView对象
  4. 如果UIImageView是另一个视图的一部分,在UIImageView上设置adjustsimagewhen祖宗聚焦为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);

截至目前,这是不可能的,只是UIButtons,然而,我确实找到了一个解决方案。

相反,创建一个UIImageView来填充UIButton的大小,并使其成为UIButton的子视图。然后调用adjustsImageWhenAncestorFocused:并将其设置为true。瞧!

UIButton* playAgain = [[UIButton alloc] initWithFrame:CGRectMake(centerX(650, self.view), sh() - 250, 300, 180)];
[playAgain setAdjustsImageWhenHighlighted:YES];
[playAgain addTarget:self action:@selector(playAgain) forControlEvents:UIControlEventPrimaryActionTriggered];
fadeIn(playAgain, self.view, 0.5);
UIImageView* playAgainIGV = [[UIImageView alloc] initWithFrame:CGRectMake(0, 0, 300, 180)];
[playAgainIGV setImage:[UIImage imageNamed:@"playagain.lsr"]];
[playAgainIGV setAdjustsImageWhenAncestorFocused:YES];
[playAgain addSubview:playAgainIGV];

我在设置文件或预编译lsr时遇到了问题。

通过Asset catalog -> New Apple TV Image Stack在XCode Asset catalog中创建LSR,并拖动png,然后通过Interface Builder或通过this works设置图像:

-(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];
}

关于david的回答,我做了一个简单的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")

相关内容

  • 没有找到相关文章

最新更新