[关于协议界面的问题][ios]



开发要求:

联网的时候,有协议数据的时候从上往下弹出界面,每个用户必须同意协议才能使用app,否则退出应用(exit(0));

我的解决方案:在comment类里,写个类方法,实现

if (![[NSUserDefaults standardUserDefaults] boolForKey:@"showUserAgreementViewController"]) {

CATransition *transition = [CATransition animation];

transition.duration = 0.3f;

transition.timingFunction = [CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseInEaseOut];

transition.type = kCATransitionMoveIn;

transition.subtype = kCATransitionFromBottom;

[ESControllerManager pushViewController:@"ESUserAgreementViewController" Parameters:@{@"title":daRenAgreementTitle,@"content":daRenAgreementContent,@"ID":@(daRenAgreementID)} Animated:NO];

[[ESControllerManager getRootNavigationController].view.layer addAnimation:transition forKey:nil];

}

});

bug:

1,当手机没电,强制关机等突然中止应用的时候,再此打开应用时,协议不能弹出;

为防止界面弹出多次,我在本地保存一个bool值,标示界面是否在弹出boolForKey:@"showUserAgreementViewController",问题就在这里,如果突然中止应用,这个bool值还是yes,界面如何能弹出来呢

2,当登陆应用的时候,弹出主页,协议不弹出;

这种情况,主界面第二次弹出还带有动画,其实还是蛮好玩的,这个问题是在push上,当两个界面同时弹出时,一个界面覆盖另一个界面,显示出来的界面就有一定的不确定行

解决方案:

应用代码:

if (![ESUserAgreementViewController IsShow]) {

[ESUserAgreementViewController Show:daRenAgreementTitle Content:daRenAgreementContent ID:daRenAgreementID];

}

界面搭建:将界面放到一个window上,界面是否弹出标示 设置成静态变量

static UIWindow* window;

static BOOL isShow;

@implementation ESUserAgreementViewController

+(BOOL)IsShow

{

return isShow;

}

+(void)Init

{

if(!window)

{

window=[[UIWindow alloc]initWithFrame:CGRectMake(0, 0, ESWidth, ESHeight)];

window.windowLevel=1499.9;

window.hidden=YES;

[window makeKeyAndVisible];

}

}

+(void)Show:(NSString*)title Content:(NSString*)content ID:(int)ID

{

isShow=YES;

[ESUserAgreementViewController Init];

ESUserAgreementViewController* viewController=[[ESUserAgreementViewController alloc]init];

[viewController setParameters:@{@"title":title,@"content":content,@"ID":@(ID)}];

for (UIView* view in window.subviews) {

[view removeFromSuperview];

}

[window setRootViewController:viewController];

[window addSubview:viewController.view];

window.frame=CGRectMake(0, -ESHeight, ESWidth, ESHeight);

window.hidden=NO;

[UIView animateWithDuration:0.3 animations:^{

window.frame=CGRectMake(0, 0, ESWidth, ESHeight);

}];

}

+(void)Hide

{

isShow=NO;

[UIView animateWithDuration:0.3 animations:^{

window.frame=CGRectMake(0, -ESHeight, ESWidth, ESHeight);

}];

}

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • /* UIViewController is a generic controller base class th...
    DanDanC阅读 5,855评论 0 2
  • *7月8日上午 N:Block :跟一个函数块差不多,会对里面所有的内容的引用计数+1,想要解决就用__block...
    炙冰阅读 7,307评论 1 14
  • //设置尺寸为屏幕尺寸的时候self.window = [[UIWindow alloc] initWithFra...
    LuckTime阅读 4,274评论 0 0
  • 昨天的夜里,我恍惚着 仿佛确是遇见你了 在额济纳齐河的左岸 ...
    茶桑阅读 3,169评论 6 5
  • 你来自遥远的小小星球 在此与我汇合 你眸子清澈 如星辰坠落 你说 那是流年的光泽 你笑了笑 脸上有好看的梨涡 可眉...
    芜城花开阅读 3,173评论 5 5