0

オーディオ再生の再生と一時停止を切り替えるボタンが 1 つあります。標準の再生/一時停止ボタン (initWithBarButtonSystemItem:UIBarButtonSystemItemPlay など) を使用していたとき、ボタンが前後に切り替わる際に、ボタンの上に素敵な白いフラッシュ アニメーション効果が表示されました。しかし、カスタム イメージを使用するようになったので、その効果は得られなくなりました。どうすれば元に戻せますか?

また、重量が重いように見えるため、これを簡素化するためのヒントをいただければ幸いです。https://stackoverflow.com/a/9104587/1462372を見ましたが、この場合(ボタンバー)に適用できるかどうかは明確ではありません。

コードは次のとおりです。

- (void) setAsPlaying:(BOOL)isPlaying
{
    self.rootViewController.playing = isPlaying;

    // we need to change which of play/pause buttons are showing, if the one to
    // reverse current action isn't showing
    if ((isPlaying && !self.pauseButton) || (!isPlaying && !self.playButton))
    {
        UIBarButtonItem *buttonToRemove = nil;
        UIBarButtonItem *buttonToAdd = nil;
        if (isPlaying)
        {
            buttonToRemove = self.playButton;
            self.playButton = nil;

            UIImage *pauseButtonImage = [UIImage imageNamed:@"icon_pause.png"];
            UIButton *pauseButton = [UIButton buttonWithType:UIButtonTypeCustom];
            [pauseButton addTarget:self action:@selector(pauseAudio:) forControlEvents:UIControlEventTouchUpInside];
            pauseButton.bounds = CGRectMake(0, 0, pauseButtonImage.size.width, pauseButtonImage.size.height);
            [pauseButton setImage:pauseButtonImage forState:UIControlStateNormal];
            self.pauseButton = [[UIBarButtonItem alloc] initWithCustomView:pauseButton];
            buttonToAdd = self.pauseButton;
        }
        else
        {
            buttonToRemove = self.pauseButton;
            self.pauseButton = nil;

// this was the way I was doing it before:
//            self.playButton = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemPlay target:self action:@selector(playAudio:)];

            UIImage *playButtonImage = [UIImage imageNamed:@"icon_play.png"];
            UIButton *playButton = [UIButton buttonWithType:UIButtonTypeCustom];
            [playButton addTarget:self action:@selector(playAudio:) forControlEvents:UIControlEventTouchUpInside];
            playButton.bounds = CGRectMake(0, 0, playButtonImage.size.width, playButtonImage.size.height);
            [playButton setImage:playButtonImage forState:UIControlStateNormal];
            self.playButton = [[UIBarButtonItem alloc] initWithCustomView:playButton];
            buttonToAdd = self.playButton;
        }

        // Get the reference to the current toolbar buttons
        NSMutableArray *toolbarButtons = [[self.toolbar items] mutableCopy];

        // Remove a button from the toolbar and add the other one
        if (buttonToRemove)
            [toolbarButtons removeObject:buttonToRemove];
        if (![toolbarButtons containsObject:buttonToAdd])
            [toolbarButtons insertObject:buttonToAdd atIndex:5];

        [self.toolbar setItems:toolbarButtons];
    }
}
4

2 に答える 2

3

このコードを試してみてください...

UIImage* image = [UIImage imageNamed:@"facebook.png"];
CGRect frame = CGRectMake(0, 0, image.size.width, image.size.height-10);
UIButton *rightbtnItem = [[UIButton alloc] initWithFrame:frame];

[rightbtnItem setBackgroundImage:image forState:UIControlStateNormal];

[rightbtnItem setShowsTouchWhenHighlighted:YES];
于 2013-06-15T04:52:41.550 に答える
0

それをコピーしてviewDidloadに貼り付けて、タッチでグロー効果を確認してください。

UIButton *button=[UIButton buttonWithType:UIButtonTypeCustom];
[button setImage:[UIImage imageNamed:@"ar.png"] forState:UIControlStateNormal];
[button setFrame:CGRectMake(0, 0, 30, 30)];
button.center=self.view.center;
[button setBackgroundImage:[UIImage imageNamed:@"RS2kQ.png"] forState:UIControlStateHighlighted];

ここから画像を取得ar.png およびRS2kQ.png

于 2013-06-15T04:24:29.697 に答える