ナビゲーション バーに「ブックマーク」ボタンを rightBarButtonItem として追加したい
- (void)viewDidLoad
{
[super viewDidLoad];
// Add bookmark button
UIBarButtonItem *bookmarkBarButton = [[UIBarButtonItem alloc] initWithTitle:@"" style:UIBarButtonItemStyleBordered target:self action:@selector(bookmark:)];
[bookmarkBarButton setImage:[UIImage imageNamed:@"greyBookmark.png"]];
[self.navigationItem setRightBarButtonItem:bookmarkBarButton];
bookmarkBarButton.tintColor = [UIColor colorWithRed:0.4 green:0.4 blue:0.4 alpha:0.9f];
b_bookmarked = false;
}
// Will call this method when the bookmark button is pressed
- (IBAction)bookmark:(id)sender
{
// Toggle color of bookmark icon on button
if ( (b_bookmarked = !b_bookmarked) )
{
[self.navigationItem.rightBarButtonItem setImage:[UIImage imageNamed:@"blueBookmark.png"]];
}
else
{
[self.navigationItem.rightBarButtonItem setImage:[UIImage imageNamed:@"greyBookmark.png"]];
}
// Save bookmark
}
grayBookmark.png と blueBookmark.png のサイズはどちらも 10x26 です。ビューが表示されると、ボタンが狭く見えます。しかし、このボタンをクリックすると、ボタンが広くなり、画像は変わります。bookmark: メソッドで setImage メソッドを呼び出すと、幅が変更されます (既定のサイズに戻ります)。[navigationItem.rightBarButtonItem setWidth:] を呼び出して幅を明示的に設定しようとしましたが、どちらも役に立ちません。それを行う前に、 width プロパティは 0 に設定され、ドキュメントによると、ボタンは画像サイズに応じてサイズ変更する必要があります。
rightBarButtonItem の幅を const にしたい。setImage の 2 回目の呼び出し後に幅が広くなる理由はありますか?