YXGuideViewController.m 4.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130
  1. //
  2. // YXGuideViewController.m
  3. // Temperature
  4. //
  5. // Created by gtjx-z on 2025/2/27.
  6. //
  7. #import "YXGuideViewController.h"
  8. #import "UIImageView+webImage.h"
  9. @interface YXGuideViewController ()
  10. @property (nonatomic, copy) NSString *imgUrlStr;
  11. @property (nonatomic, weak) UIImageView *guideImgView;
  12. @property (nonatomic, weak) UIButton *closeBtn;
  13. @property (nonatomic, strong) dispatch_source_t timer;
  14. @end
  15. @implementation YXGuideViewController
  16. - (void)viewDidLoad {
  17. [super viewDidLoad];
  18. self.closeBtn.hidden = YES;
  19. [self createGuidePage];
  20. [self p_getGuideImg];
  21. }
  22. - (void)p_getGuideImg
  23. {
  24. RDS_WEAKSELF(weakSelf)
  25. [RDSDemoApiHelper rds_getGuideImgSuccess:^(id responseObject) {
  26. if ([responseObject[@"code"] intValue] == 0) {
  27. DDLog(@"引导页获取成功");
  28. NSDictionary *dataDic = responseObject[@"data"];
  29. NSArray *listArray = dataDic[@"list"];
  30. if (listArray.count > 0) {
  31. NSDictionary *imgDic = listArray.firstObject;
  32. NSString *imgUrl = imgDic[@"url"];
  33. if (imgUrl != nil) {
  34. NSString *urlStr = [NSString stringWithFormat:@"%@%@",kBaseUrlHeadImg,imgDic[@"url"]];
  35. [weakSelf.guideImgView rds_downloadImage:urlStr placeHoler:nil];
  36. [weakSelf startTimer];
  37. }
  38. }
  39. } else{
  40. DDLog(@"引导页获取失败:%@",responseObject[@"message"]);
  41. [self removeFromParentViewController];
  42. [self.view removeFromSuperview];
  43. }
  44. } failure:^(NSError *error) {
  45. [self removeFromParentViewController];
  46. [self.view removeFromSuperview];
  47. }];
  48. }
  49. -(void)createGuidePage
  50. {
  51. UIImageView *guideImgView = [[UIImageView alloc]initWithFrame:self.view.bounds];
  52. [self.view addSubview:guideImgView];
  53. self.guideImgView = guideImgView;
  54. UIButton *closeBtn = [UIButton buttonWithType:UIButtonTypeCustom];
  55. closeBtn.frame = CGRectMake(SCREEN_WIDTH - 120, 60, 90, 30);
  56. closeBtn.tintColor = kTextColor;
  57. closeBtn.backgroundColor = [UIColor colorWithHexString:@"#000000" alpha:0.2];
  58. [closeBtn setTitle:@"跳过" forState:UIControlStateNormal];
  59. [closeBtn addTarget:self action:@selector(closeGuideView) forControlEvents:UIControlEventTouchUpInside];
  60. closeBtn.layer.cornerRadius = 15;
  61. closeBtn.hidden = YES;
  62. [self.view addSubview:closeBtn];
  63. self.closeBtn = closeBtn;
  64. }
  65. -(void)closeGuideView
  66. {
  67. [self removeFromParentViewController];
  68. [self.view removeFromSuperview];
  69. if (self.closeBlock) {
  70. self.closeBlock();
  71. }
  72. }
  73. -(void)startTimer
  74. {
  75. __block int timeout = 3; //倒计时时间
  76. dispatch_queue_t queue = dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0);
  77. _timer = dispatch_source_create(DISPATCH_SOURCE_TYPE_TIMER, 0, 0,queue);
  78. dispatch_source_set_timer(_timer,dispatch_walltime(NULL, 0),1.0*NSEC_PER_SEC, 0); //每秒执行
  79. dispatch_source_set_event_handler(_timer, ^{
  80. if(timeout <= 0) {
  81. //倒计时结束
  82. dispatch_async(dispatch_get_main_queue(), ^{
  83. [self removeFromParentViewController];
  84. [self.view removeFromSuperview];
  85. });
  86. } else {
  87. // NSString *strTime = [NSString stringWithFormat:@"%ds跳过",timeout];
  88. // dispatch_async(dispatch_get_main_queue(), ^{
  89. // //设置界面的按钮显示 根据自己需求设置
  90. // [self.closeBtn setTitle:strTime forState:UIControlStateNormal];
  91. // });
  92. timeout--;
  93. }
  94. });
  95. dispatch_resume(_timer);
  96. }
  97. -(void)dealloc{
  98. if (_timer != nil) {
  99. dispatch_suspend(_timer);
  100. _timer = nil;
  101. }
  102. }
  103. /*
  104. #pragma mark - Navigation
  105. // In a storyboard-based application, you will often want to do a little preparation before navigation
  106. - (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender {
  107. // Get the new view controller using [segue destinationViewController].
  108. // Pass the selected object to the new view controller.
  109. }
  110. */
  111. @end