20

ロゴである UIButton があります。このロゴボタンは永久に光りますが、タッチすると光りなくなります。光るアニメーションのようなものです。

何か提案はありますか?

  Undefined symbols for architecture i386:
 "_OBJC_CLASS_$_CABasicAnimation", referenced from:
 objc-class-ref in UIView+Glow.o
 "_OBJC_CLASS_$_CAMediaTimingFunction", referenced from:
  objc-class-ref in UIView+Glow.o
  "_kCAMediaTimingFunctionEaseInEaseOut", referenced from:
  -[UIView(Glow) startGlowing] in UIView+Glow.o
   ld: symbol(s) not found for architecture i386
   clang: error: linker command failed with exit code 1 (use -v to see invocation)
4

6 に答える 6

26

「特別な」ボタンのこのグロー + 拡大/縮小アニメーションが気に入っています。

-(void)makeViewShine:(UIView*) view
{
view.layer.shadowColor = [UIColor yellowColor].CGColor;
view.layer.shadowRadius = 10.0f;
view.layer.shadowOpacity = 1.0f;
view.layer.shadowOffset = CGSizeZero;


[UIView animateWithDuration:0.7f delay:0 options:UIViewAnimationOptionAutoreverse | UIViewAnimationCurveEaseInOut | UIViewAnimationOptionRepeat | UIViewAnimationOptionAllowUserInteraction  animations:^{

    [UIView setAnimationRepeatCount:15];

    view.transform = CGAffineTransformMakeScale(1.2f, 1.2f);


} completion:^(BOOL finished) {

    view.layer.shadowRadius = 0.0f;
    view.transform = CGAffineTransformMakeScale(1.0f, 1.0f);
}];

}
于 2013-03-16T22:42:29.813 に答える
20

secret lab が作成した UIViewの Glow カテゴリを使用することをお勧めします。

例はこちらから入手できます

于 2012-07-19T12:34:31.620 に答える
9

から取得した光るコード: UILabel と UIButton のグロー効果の作成

まず、QuartzCore フレームワークをインポートする必要があります。

#import <QuartzCore/QuartzCore.h>

ボタンを作成するとき (または でviewDidLoad、コード構造によって異なります)、次のコードを追加します。

UIColor *color = button.currentTitleColor;
button.titleLabel.layer.shadowColor = [color CGColor];
button.titleLabel.layer.shadowRadius = 4.0f;
button.titleLabel.layer.shadowOpacity = .9;
button.titleLabel.layer.shadowOffset = CGSizeZero;
button.titleLabel.layer.masksToBounds = NO;

UIControlEventTouchDown次の 2 つのイベントを監視する必要があります。UIControlEventTouchUpInside

ハンドラーにUIControlEventTouchDown次のコードを追加します。

UIColor *color = [UIColor clearColor];
button.titleLabel.layer.shadowColor = [color CGColor];

そして、UIControlEventUpInsidehandler に次のコードを追加します。

UIColor *color = button.currentTitleColor;
button.titleLabel.layer.shadowColor = [color CGColor];

実装の詳細は、ボタンをプログラムで作成するか、Interface Builder を使用して作成するかによって異なりますが、ここから理解できると確信しています。

編集:カスタムボタンの場合、次のコードを追加するだけで機能するはずです:

[button setImage:[UIImage imageNamed:@"buttonWithGlow.png"]
        forState:UIControlStateNormal];
[button setImage:[UIImage imageNamed:@"buttonWithNoGlow.png"] 
        forState:UIControlStateHighlighted];
于 2012-07-19T09:12:52.453 に答える