私は自分のプロジェクトにカスタムバーボタンを追加しようとしていますが、いくつか問題があります。まず、私のボタンのための要件の上に行くことができます、それが必要:カスタムUIBarButton項目を変更できない
- to display a custom font
- to be enabled/disabled
- to have its colour animated based to provide user feedback.
は、だから私は最初にストーリーボードを通じてbarButtonItem
を接続しようと、私は色を変更し、それを無効にする可能性があります。しかし、フォントを変更したり、カラーアニメーションを追加することはできませんでした。私はすでに色をアニメーション化するアプリで使用しています次のメソッドを使用することができるようにしたい:
- (void)textFlashTextfieldAnimation:(nonnull UITextField *)view duration:(NSTimeInterval)duration animateToColour:(UIColor*)animationColour textColor:(UIColor*)textColour completion:(void (^)(BOOL finished))completion {
[UIView transitionWithView:view duration:0 options:UIViewAnimationOptionTransitionCrossDissolve animations:^{
view.textColor = animationColour;
} completion:^(BOOL finished) {
[UIView transitionWithView:view duration:2.0f options:UIViewAnimationOptionTransitionCrossDissolve animations:^{
view.textColor = textColour;
} completion:completion];
}];
}
私はアニメーション化することができるように理想的には私がbarButtonItem
/UIButton
を受け入れるために、この機能を変更することができるだろうそれは簡単です。しかし、ストーリーボードを介してボタンを接続すると、ボタンのレイヤーにアクセスすることができないため、アニメーションは不可能です。
私はコードでこれについて説明し始めましたが、私は2つのデッドエンドを行ってきました。ここbarButtonItem
の本当に基本的な実装です:
UIBarButtonItem *myButton=[[UIBarButtonItem alloc] initWithTitle:@"My Custom Button" style:UIBarButtonItemStylePlain target:self action:@selector(/*do something*/)];
[self.navigationItem setRightBarButtonItem:myButton];
さて、これはそれも良くないので、私はしかし、私は、フォントを変更したり、ボタンの層にアクセスすることはできませんストーリーボードのボタンのようにそれを使用することができるという事実に動作します。
私は、UIView
とUIButton
を作成し、barButtonItem
に追加することで、私のバーボタンの完全カスタムビューを作成しようとした、これはここで見ることができます:
UIFont *barButtonFonts = [UIFont fontWithName:kFont size:16];
//Right Button
//create view
UIView *rightButtonView = [[UIView alloc]initWithFrame:CGRectMake(0, 0, 45, 25)];
//create button
UIButton *rightButton = [UIButton buttonWithType:UIButtonTypeSystem];
rightButton.backgroundColor = [UIColor clearColor];
rightButton.frame = rightButtonView.frame; //set frame = to view
[rightButton setTitle:NSLocalizedString(@"Save", nil) forState:UIControlStateNormal];
rightButton.titleLabel.font = barButtonFonts;
rightButton.tintColor = [UIColor redColor];
[rightButton addTarget:self action:@selector(actionMethod) forControlEvents:UIControlEventTouchUpInside];
[rightButtonView addSubview:rightButton];
UIBarButtonItem *rightBarButton = [[UIBarButtonItem alloc] initWithCustomView:rightButtonView];
self.navigationItem.rightBarButtonItem = rightBarButton;
今、私はそのbarButtonItem
を持っていますカスタムフォントを表示しますが、UIインタラクションはまったくありません。有効/無効、強調表示されていない/強調表示されている場合も同じように見えます。ボタンは、それがちょうどそうではないように見えるはずです。
ビュー内でボタンを変更できるように、このボタンのコンセントをコードのどこかに作成する必要がありますか?ナビゲーションバーに追加されたボタンを変更することも可能ですか?
誰かが何か提案があれば、それは分かります!
はい私はこれを最終的に考え出した。私は、 'barButton'の' customView'プロパティを使っていくつかのアニメーションを行うことを望んでいました。私は現在、ボタンの通常の有効/選択/無効状態を設定しています。 – Axemasta