UIAlertView
在iOS7中,使用addSubview
方法已不建议向中添加一些控件。据我所知,苹果承诺增加contentView
财产。
iOS 7现在已发布,我发现未添加此属性。这就是为什么我搜索一些自定义解决方案的功能,该解决方案可以向此AlertView添加进度栏。例如类似于TSAlertView的东西,但更适合在iOS 7中使用。
UIAlertView
在iOS7中,使用addSubview
方法已不建议向中添加一些控件。据我所知,苹果承诺增加contentView
财产。
iOS 7现在已发布,我发现未添加此属性。这就是为什么我搜索一些自定义解决方案的功能,该解决方案可以向此AlertView添加进度栏。例如类似于TSAlertView的东西,但更适合在iOS 7中使用。
Answers:
这是Github上的一个项目,用于将任何UIView添加到iOS7上看起来像UIAlertView的对话框中。
(从此StackOverflow线程复制。)
我只用了1天的时间就创建了自己的警报视图,该视图与Apple的完全一样
UIButton
现在的表,默认表单元就足够了)。请注意,您需要3个按钮表:两个用于左右按钮(每当按钮数为2时),另一个用于其他情况(一个按钮或两个以上按钮)。从UIAlertView
您的自定义警报中实施所有方法。
显示/关闭-您可以为警报创建特定的模式窗口,但我只是将警报放在根视图控制器的顶部。将可见警报注册到静态数组。如果显示第一个警报/关闭最后一个警报,请将窗口/视图控制器的色调模式更改为暗淡/自动,并添加/删除暗淡视图(alpha = 0.2的黑色)。
编辑:
可以在“ iOS_RunningWithASnap” WWDC 2013示例代码中找到模糊的背景和视差效果示例代码。
视差效果:
UIInterpolatingMotionEffect* xAxis = [[[UIInterpolatingMotionEffect alloc] initWithKeyPath:@"center.x"
type:UIInterpolatingMotionEffectTypeTiltAlongHorizontalAxis] autorelease];
xAxis.minimumRelativeValue = [NSNumber numberWithFloat:-10.0];
xAxis.maximumRelativeValue = [NSNumber numberWithFloat:10.0];
UIInterpolatingMotionEffect* yAxis = [[[UIInterpolatingMotionEffect alloc] initWithKeyPath:@"center.y"
type:UIInterpolatingMotionEffectTypeTiltAlongVerticalAxis] autorelease];
yAxis.minimumRelativeValue = [NSNumber numberWithFloat:-10.0];
yAxis.maximumRelativeValue = [NSNumber numberWithFloat:10.0];
UIMotionEffectGroup *group = [[[UIMotionEffectGroup alloc] init] autorelease];
group.motionEffects = @[xAxis, yAxis];
[self addMotionEffect:group];
背景模糊是唯一复杂的事情。如果可以改用不透明的颜色,请使用它。否则,需要进行大量实验。另请注意,背景较暗时,模糊的背景不是一个好的解决方案。
对于显示/关闭动画g,我正在使用新的spring动画方法:
void (^animations)() = ^{
self.alpha = 1.0f;
self.transform = CGAffineTransformIdentity;
};
self.alpha = 0.0f;
self.transform = CGAffineTransformMakeScale(0.5f, 0.5f);
[UIView animateWithDuration:0.3
delay:0.0
usingSpringWithDamping:0.7f
initialSpringVelocity:0.0f
options:UIViewAnimationOptionCurveLinear
animations:animations
completion:^(BOOL completed) {
//calling UIAlertViewDelegate method
}];
我编写了UIAlertView的完整实现,该实现模仿了完整的UIAlertView API,但是添加了我们一直想要的contentView属性:SDCAlertView。
对于那些喜欢简单有效的方法而无需编写代码的人。这是一个很酷的解决方案,无需使用任何其他私有框架即可为ios 7警报视图添加子视图,即
[alertView setValue:imageView forKey:@“ accessoryView”];
样例代码有助于更好地理解,
UIImageView *imageView = [[UIImageView alloc] initWithFrame:CGRectMake(180, 10, 85, 50)];
UIImage *wonImage = [UIImage imageNamed:@"image.png"];
[imageView setImage:wonImage];
//check if os version is 7 or above
if (floor(NSFoundationVersionNumber) > NSFoundationVersionNumber_iOS_6_1) {
[alertView setValue:imageView forKey:@"accessoryView"];
}else{
[alertView addSubview:imageView];
}
希望它可以帮助一些人,谢谢:)
else
情况下可以正常使用,这意味着条件可以正常使用,addSubview
但if
条件不能使用setValue
。
对于IOS7
UIAlertView *alertView1 = [[UIAlertView alloc] initWithTitle:@"Enter Form Name"
message:@""
delegate:self
cancelButtonTitle:@"Cancel"
otherButtonTitles:@"Ok", nil];
alertView1.alertViewStyle = UIAlertViewStyleSecureTextInput;
UITextField *myTextField = [alertView1 textFieldAtIndex:0];
[alertView1 setTag:555];
myTextField.keyboardType=UIKeyboardTypeAlphabet;
[alertView1 show];
UIAlertView
iOS7中不会有自定义视图,也不会有contentView
Apple改变主意,因此addSubview
现在不可能UIAlertView
。
根据苹果论坛上的许多话题,SVProgressHUD是一个很好的选择。
编辑:
有没有正式addSubview
,也继承了UIAlertView
在iOS7。
UIAlertView类旨在按原样使用,并且不支持子类化。此类的视图层次结构是私有的,不能修改。
其他好的替代品:
PKAlertController(https://github.com/goodpatch/PKAlertController)是很棒的库。我测试了很多类似的库,这满足了我的所有要求。
为什么很酷: