如何自定义iOS警报视图?

V.V*_*V.V 32 iphone cocoa-touch objective-c ios

我想alert view在iOS应用程序中创建自定义.例如,我希望把一些images在此alert,并改变其颜色.

我知道如何创建一个普通的UIAlertView,但有没有办法自定义alert view

Nat*_* S. 39

我设置了自己的UIViewController,我可以使用自己的图像进行修饰.我通常只使用一个或两个按钮,所以如果它没有被使用我隐藏第二个按钮.视图实际上是整个屏幕的大小,因此它会阻挡它背后的触摸,但它大部分都是透明的,因此背景显示出来.

把它带进来的时候,我会用一些动画让它像Apple的警示视图一样反弹.像这样的东西有效:

-(void)initialDelayEnded {
    self.view.transform = CGAffineTransformScale(CGAffineTransformIdentity, 0.001, 0.001);
    self.view.alpha = 1.0;
    [UIView beginAnimations:nil context:nil];
    [UIView setAnimationDuration:kTransitionDuration/1.5];
    [UIView setAnimationDelegate:self];
    [UIView setAnimationDidStopSelector:@selector(bounce1AnimationStopped)];
    self.view.transform = CGAffineTransformScale(CGAffineTransformIdentity, 1.1, 1.1);
    [UIView commitAnimations];
}

- (void)bounce1AnimationStopped {
    [UIView beginAnimations:nil context:nil];
    [UIView setAnimationDuration:kTransitionDuration/2];
    [UIView setAnimationDelegate:self];
    [UIView setAnimationDidStopSelector:@selector(bounce2AnimationStopped)];
    self.view.transform = CGAffineTransformScale(CGAffineTransformIdentity, 0.9, 0.9);
    [UIView commitAnimations];
}

- (void)bounce2AnimationStopped {
    [UIView beginAnimations:nil context:nil];
    [UIView setAnimationDuration:kTransitionDuration/2];
    self.view.transform = CGAffineTransformIdentity;
    [UIView commitAnimations];
}
Run Code Online (Sandbox Code Playgroud)

我有可能在类中内置一个短延迟,因此当延迟结束时会调用initialDelayEnded.

初始化时,我按下每个按钮时传入一个我想调用的对象和选择器,然后在按下按钮时调用对象上的相应选择器.


Tom*_*ift 12

这是我写的自定义警报视图,它是UIAlertView的替代品.您可以设置自定义背景图像; 扩展以支持自定义背景颜色并不难.

https://github.com/TomSwift/TSAlertView