YOUPAILZStartLiveView.m 23 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507
  1. //
  2. // YOUPAILZStartLiveView.m
  3. // TIANYAN
  4. //
  5. // Created by CY on 2021/5/20.
  6. // Copyright © 2021 leo. All rights reserved.
  7. //
  8. #import "YOUPAILZStartLiveView.h"
  9. #import "LZAlertWindow.h"
  10. #import "UIViewController+TFPresent.h"
  11. #import "YOUPAILZLiveProtocolWindow.h"
  12. #import "YOUPAILZLiveManagerListUtils.h"
  13. @interface YOUPAILZStartLiveView ()<TZImagePickerControllerDelegate>
  14. @property (nonatomic, weak) UIButton *youpaipcloseBtn; // 退出按钮
  15. @property (nonatomic, weak) UIButton *youpaipaddressBtn; // 位置按钮
  16. @property (nonatomic, weak) UIButton *youpaipchangeCameraBtn; // 切换摄像头按钮
  17. @property (nonatomic, weak) UIButton *youpaipbeautyBtn; // 美颜按钮
  18. @property (nonatomic, weak) UIButton *youpaipcoverBtn; //封面承载btn
  19. @property (nonatomic, strong) UIImage *coverImage;
  20. @property (nonatomic, strong) NSString *youpaipcover; // 封面地址
  21. @property (nonatomic, weak) UITextField *youpaipliveTitleTF; // 直播间标题
  22. @property (nonatomic, weak) UIButton *youpaipstartBtn; // 开始直播按钮
  23. @property (nonatomic, strong) YOUPAILZLiveShareModel *youpaipmodelshareModel; //分享Model
  24. @property (nonatomic, strong) NSString *youpaipgpsCity; // 所在城市
  25. @property (nonatomic, strong) UILabel *youpaipcountDownL; // 倒计时
  26. @property (nonatomic, strong) YOUPAILZLiveModel *youpaipliveModel;// 直播间Model
  27. @property (nonatomic, weak) UIButton *youpaipagreeProtocolBtn; // 是否同意直播
  28. @end
  29. @implementation YOUPAILZStartLiveView
  30. - (instancetype)initWithFrame:(CGRect)frame shareModel:(nonnull YOUPAILZLiveShareModel *)shareModel youpaipcover:(NSString *)youpaipcover{
  31. if (self = [super initWithFrame:frame]) {
  32. _youpaipcover = youpaipcover;
  33. _youpaipmodelshareModel = shareModel;
  34. [self youpaifupdateGpsCity];
  35. [self youpaifinitUI];
  36. [self youpaifsetupAuthority];
  37. }
  38. return self;
  39. }
  40. /// 权限
  41. - (void)youpaifsetupAuthority{
  42. [UCAuthorityManager cameraAuthority:^{
  43. } denied:^{
  44. [self youpaifshowAlertVCWithTitle:@"请在iphone的“设置-隐私-相机”选项中,允许APP访问您的相机。"];
  45. }];
  46. [UCAuthorityManager microPhoneAuthority:^{
  47. } denied:^{
  48. [self youpaifshowAlertVCWithTitle:@"请在iphone的“设置-隐私-麦克风”选项中,允许APP访问您的麦克风。"];
  49. }];
  50. }
  51. - (void)youpaifshowAlertVCWithTitle:(NSString *)title{
  52. UIAlertController *systemAlert = [UIAlertController alertControllerWithTitle:title message:nil preferredStyle:UIAlertControllerStyleAlert];
  53. UIAlertAction *cancelAction = [UIAlertAction actionWithTitle:@"现在去设置" style:UIAlertActionStyleDefault handler:^(UIAlertAction * _Nonnull action){
  54. if ([[UIDevice currentDevice].systemVersion floatValue] < 10.0)
  55. {
  56. [[UIApplication sharedApplication] openURL:[NSURL URLWithString:UIApplicationOpenSettingsURLString]];
  57. }
  58. else
  59. {
  60. // 去系统设置页面
  61. if (@available(iOS 10.0, *)) {
  62. [[UIApplication sharedApplication] openURL:[NSURL URLWithString:UIApplicationOpenSettingsURLString] options:@{} completionHandler:nil];
  63. } else {
  64. // Fallback on earlier versions
  65. }
  66. }
  67. }];
  68. UIAlertAction *action = [UIAlertAction actionWithTitle:@"返回" style:UIAlertActionStyleCancel handler:^(UIAlertAction * _Nonnull action) {
  69. [[LCTools getCurrentVC].navigationController popViewControllerAnimated:YES];
  70. }];
  71. [systemAlert addAction:cancelAction];
  72. [systemAlert addAction:action];
  73. dispatch_async(dispatch_get_main_queue(), ^{
  74. [[LCTools getCurrentVC] presentViewController: systemAlert animated: YES completion: nil];
  75. });
  76. }
  77. - (void)youpaifinitUI{
  78. UIView *navigationBarV = [[UIView alloc] init];
  79. [self addSubview:navigationBarV];
  80. [navigationBarV mas_makeConstraints:^(MASConstraintMaker *make) {
  81. make.left.right.offset(0.0f);
  82. make.height.offset(44.0f);
  83. make.top.offset(StatusBarHeight);
  84. }];
  85. UIButton *youpaipcloseBtn = [UIButton buttonWithType:UIButtonTypeCustom];
  86. [youpaipcloseBtn setImage:[UIImage imageNamed:@"vqu_images_L_live_close"] forState:UIControlStateNormal];
  87. [youpaipcloseBtn setImage:[UIImage imageNamed:@"vqu_images_L_live_close"] forState:UIControlStateHighlighted];
  88. [youpaipcloseBtn addTarget:self action:@selector(youpaifcloseBtnClick) forControlEvents:UIControlEventTouchUpInside];
  89. [navigationBarV addSubview:youpaipcloseBtn];
  90. self.youpaipcloseBtn = youpaipcloseBtn;
  91. [youpaipcloseBtn mas_makeConstraints:^(MASConstraintMaker *make) {
  92. make.left.offset(6.0f);
  93. make.top.bottom.offset(0.0f);
  94. make.width.offset(44.0f);
  95. }];
  96. UIButton *youpaipbeautyBtn = [UIButton buttonWithType:UIButtonTypeCustom];
  97. [youpaipbeautyBtn setImage:[UIImage imageNamed:@"vqu_images_L_Live_beauty"] forState:UIControlStateNormal];
  98. [youpaipbeautyBtn setImage:[UIImage imageNamed:@"vqu_images_L_Live_beauty"] forState:UIControlStateHighlighted];
  99. [youpaipbeautyBtn setTitle:@"美颜" forState:UIControlStateNormal];
  100. [youpaipbeautyBtn setTitleColor:[UIColor whiteColor] forState:UIControlStateNormal];
  101. youpaipbeautyBtn.titleLabel.font = LCFont16;
  102. [youpaipbeautyBtn addTarget:self action:@selector(youpaifbeautyBtnClick) forControlEvents:UIControlEventTouchUpInside];
  103. [navigationBarV addSubview:youpaipbeautyBtn];
  104. self.youpaipbeautyBtn = youpaipbeautyBtn;
  105. [youpaipbeautyBtn mas_makeConstraints:^(MASConstraintMaker *make) {
  106. make.right.offset(-16.0f);
  107. make.top.bottom.offset(0.0f);
  108. }];
  109. UIButton *youpaipchangeCameraBtn = [UIButton buttonWithType:UIButtonTypeCustom];
  110. [youpaipchangeCameraBtn setImage:[UIImage imageNamed:@"vqu_images_L_live_change_camera"] forState:UIControlStateNormal];
  111. [youpaipchangeCameraBtn setImage:[UIImage imageNamed:@"vqu_images_L_live_change_camera"] forState:UIControlStateHighlighted];
  112. [youpaipchangeCameraBtn setTitle:@"翻转" forState:UIControlStateNormal];
  113. [youpaipchangeCameraBtn setTitleColor:[UIColor whiteColor] forState:UIControlStateNormal];
  114. youpaipchangeCameraBtn.titleLabel.font = LCFont16;
  115. [youpaipchangeCameraBtn addTarget:self action:@selector(youpaifchangeCameraBtnClick) forControlEvents:UIControlEventTouchUpInside];
  116. [navigationBarV addSubview:youpaipchangeCameraBtn];
  117. self.youpaipchangeCameraBtn = youpaipchangeCameraBtn;
  118. [youpaipchangeCameraBtn mas_makeConstraints:^(MASConstraintMaker *make) {
  119. make.right.equalTo(youpaipbeautyBtn.mas_left).offset(-18.0f);
  120. make.top.bottom.offset(0.0f);
  121. }];
  122. UIButton *youpaipaddressBtn = [UIButton buttonWithType:UIButtonTypeCustom];
  123. [youpaipaddressBtn setImage:[UIImage imageNamed:@"vqu_images_L_live_address_s"] forState:UIControlStateNormal];
  124. [youpaipaddressBtn setImage:[UIImage imageNamed:@"vqu_images_L_live_address_s"] forState:UIControlStateSelected];
  125. [youpaipaddressBtn setTitle:@"定位中" forState:UIControlStateNormal];
  126. [youpaipaddressBtn setTitleColor:[UIColor whiteColor] forState:UIControlStateNormal];
  127. youpaipaddressBtn.titleLabel.font = LCFont16;
  128. [youpaipaddressBtn addTarget:self action:@selector(youpaifaddressBtnClick:) forControlEvents:UIControlEventTouchUpInside];
  129. [navigationBarV addSubview:youpaipaddressBtn];
  130. self.youpaipaddressBtn = youpaipaddressBtn;
  131. [youpaipaddressBtn mas_makeConstraints:^(MASConstraintMaker *make) {
  132. make.right.equalTo(youpaipchangeCameraBtn.mas_left).offset(-18.0f);
  133. make.top.bottom.offset(0.0f);
  134. }];
  135. UIView *bgV = [[UIView alloc] init];
  136. bgV.backgroundColor = [[UIColor blackColor] colorWithAlphaComponent:0.4f];
  137. [self addSubview:bgV];
  138. [bgV mas_makeConstraints:^(MASConstraintMaker *make) {
  139. make.left.right.offset(0.0f);
  140. make.top.equalTo(navigationBarV.mas_bottom).offset(16.0f);
  141. make.height.offset(141.0f);
  142. }];
  143. UIButton *youpaipcoverBtn = [UIButton buttonWithType:UIButtonTypeCustom];
  144. // [youpaipcoverBtn setImage:[UIImage imageNamed:@"vqu_images_L_live_start_add_cover"] forState:UIControlStateNormal];
  145. [youpaipcoverBtn sd_setImageWithURL:[LCTools getImageUrlWithAddress:self.youpaipcover] forState:UIControlStateNormal];
  146. youpaipcoverBtn.backgroundColor = HexColorFromRGB(0x2A2935);
  147. youpaipcoverBtn.layer.cornerRadius = 6.0f;
  148. youpaipcoverBtn.clipsToBounds = YES;
  149. youpaipcoverBtn.imageView.contentMode = UIViewContentModeScaleAspectFill;
  150. youpaipcoverBtn.contentHorizontalAlignment = UIControlContentHorizontalAlignmentFill;
  151. youpaipcoverBtn.contentVerticalAlignment = UIControlContentVerticalAlignmentFill;
  152. [youpaipcoverBtn addTarget:self action:@selector(youpaifopenAlbum) forControlEvents:UIControlEventTouchUpInside];
  153. [bgV addSubview:youpaipcoverBtn];
  154. self.youpaipcoverBtn = youpaipcoverBtn;
  155. [youpaipcoverBtn mas_makeConstraints:^(MASConstraintMaker *make) {
  156. make.left.offset(16.0f);
  157. make.centerY.equalTo(bgV.mas_centerY);
  158. make.size.mas_offset(CGSizeMake(109.0f, 109.0f));
  159. }];
  160. //加号图片
  161. UIImageView *im = [UIImageView new];
  162. [youpaipcoverBtn addSubview:im];
  163. [im mas_makeConstraints:^(MASConstraintMaker *make) {
  164. make.center.mas_equalTo(0);
  165. }];
  166. im.image = [UIImage imageNamed:@"vqu_images_L_live_fengmian"];
  167. if (self.youpaipcover) {
  168. im.hidden = YES;
  169. }else{
  170. im.hidden = NO;
  171. }
  172. UIButton *addCoverBtn = [UIButton buttonWithType:UIButtonTypeCustom];
  173. UIImage *bgimage = [LCTools ColorImage:CGSizeMake(109.0f, 26.0f) FromColors:@[HexColorFromRGB(0x1C1D23),HexColorFromRGB(0x1C1D23)] ByGradientType:GradientLeftToRight];
  174. [addCoverBtn setBackgroundImage:bgimage forState:UIControlStateNormal];
  175. [addCoverBtn setBackgroundImage:bgimage forState:UIControlStateHighlighted];
  176. addCoverBtn.userInteractionEnabled = NO;
  177. addCoverBtn.titleLabel.font = LCFont12;
  178. [addCoverBtn setTitleColor:[UIColor whiteColor] forState:UIControlStateNormal];
  179. [addCoverBtn setTitle:@"添加封面" forState:UIControlStateNormal];
  180. [youpaipcoverBtn addSubview:addCoverBtn];
  181. [addCoverBtn mas_makeConstraints:^(MASConstraintMaker *make) {
  182. make.left.bottom.right.offset(0.0f);
  183. make.height.offset(26.0f);
  184. }];
  185. UILabel *liveTitleL = [[UILabel alloc] init];
  186. liveTitleL.text = @"直播标题";
  187. liveTitleL.textColor = [UIColor whiteColor];
  188. liveTitleL.font = LCFont14;
  189. [bgV addSubview:liveTitleL];
  190. [liveTitleL mas_makeConstraints:^(MASConstraintMaker *make) {
  191. make.left.equalTo(youpaipcoverBtn.mas_right).offset(16.0f);
  192. make.top.offset(43.0f);
  193. make.height.offset(16.0f);
  194. }];
  195. UITextField *youpaipliveTitleTF = [[UITextField alloc] init];
  196. youpaipliveTitleTF.font = LCBoldFont(19.0f);
  197. youpaipliveTitleTF.textColor = [UIColor whiteColor];
  198. NSMutableAttributedString* placeholder = [[NSMutableAttributedString alloc]initWithString:@"给直播写个标题吧~"];
  199. [placeholder addAttribute:NSForegroundColorAttributeName value:HexColorFromRGB(0x9F9DA5) range:NSMakeRange(0, placeholder.length)];
  200. youpaipliveTitleTF.attributedPlaceholder = placeholder;
  201. youpaipliveTitleTF.tintColor = ZYPinkColor;
  202. [bgV addSubview:youpaipliveTitleTF];
  203. self.youpaipliveTitleTF = youpaipliveTitleTF;
  204. [youpaipliveTitleTF mas_makeConstraints:^(MASConstraintMaker *make) {
  205. make.left.equalTo(youpaipcoverBtn.mas_right).offset(16.0f);
  206. make.top.equalTo(liveTitleL.mas_bottom).offset(8.0f);
  207. make.right.offset(-16.0f);
  208. make.height.offset(44.0f);
  209. }];
  210. UIButton *youpaipstartBtn = [UIButton buttonWithType:UIButtonTypeCustom];
  211. UIImage *image = [LCTools ColorImage:CGSizeMake(KScreenWidth - 12.0f, 48.0f) FromColors:@[ZYGradientOneColor,ZYGradientTwoColor] ByGradientType:GradientLeftToRight];
  212. [youpaipstartBtn setBackgroundImage:image forState:UIControlStateNormal];
  213. [youpaipstartBtn setBackgroundImage:image forState:UIControlStateHighlighted];
  214. youpaipstartBtn.titleLabel.font = LCFont17;
  215. youpaipstartBtn.layer.cornerRadius = 24.0f;
  216. youpaipstartBtn.clipsToBounds = YES;
  217. [youpaipstartBtn addTarget:self action:@selector(youpaifstartBtnClick) forControlEvents:UIControlEventTouchUpInside];
  218. [youpaipstartBtn setTitleColor:[UIColor whiteColor] forState:UIControlStateNormal];
  219. [youpaipstartBtn setTitle:@"开始直播" forState:UIControlStateNormal];
  220. [self addSubview:youpaipstartBtn];
  221. self.youpaipstartBtn = youpaipstartBtn;
  222. [youpaipstartBtn mas_makeConstraints:^(MASConstraintMaker *make) {
  223. make.left.offset(60.0f);
  224. make.right.offset(-60.0f);
  225. make.bottom.offset(-(98.0f-SafeHeight));
  226. make.height.offset(48.0f);
  227. }];
  228. UIView *protocolBgV = [[UIView alloc] init];
  229. [self addSubview:protocolBgV];
  230. [protocolBgV mas_makeConstraints:^(MASConstraintMaker *make) {
  231. make.centerX.equalTo(self);
  232. make.bottom.equalTo(youpaipstartBtn.mas_top).offset(-15.0f);
  233. make.height.offset(20.0f);
  234. }];
  235. UIButton *youpaipagreeProtocolBtn = [UIButton buttonWithType:UIButtonTypeCustom];
  236. [youpaipagreeProtocolBtn setImage:[UIImage imageNamed:@"vqu_images_L_live_hint_No"] forState:UIControlStateNormal];
  237. [youpaipagreeProtocolBtn setImage:[UIImage imageNamed:@"vqu_images_L_live_hint_select"] forState:UIControlStateSelected];
  238. [youpaipagreeProtocolBtn setTitle:@" 开播默认同意遵守" forState:UIControlStateNormal];
  239. [youpaipagreeProtocolBtn addTarget:self action:@selector(youpaifagreeProtocolBtnClick:) forControlEvents:UIControlEventTouchUpInside];
  240. [youpaipagreeProtocolBtn setTitleColor:[[UIColor whiteColor] colorWithAlphaComponent:0.8f] forState:UIControlStateNormal];
  241. youpaipagreeProtocolBtn.titleLabel.font = LCFont(12.0f);
  242. [protocolBgV addSubview:youpaipagreeProtocolBtn];
  243. self.youpaipagreeProtocolBtn = youpaipagreeProtocolBtn;
  244. [youpaipagreeProtocolBtn mas_makeConstraints:^(MASConstraintMaker *make) {
  245. make.left.offset(0.0f);
  246. make.top.bottom.offset(0.0f);
  247. }];
  248. UIButton *protocolBtn = [UIButton buttonWithType:UIButtonTypeCustom];
  249. [protocolBtn setTitle:@"《女神管理条例》" forState:UIControlStateNormal];
  250. [protocolBtn setTitleColor:[UIColor whiteColor] forState:UIControlStateNormal];
  251. [protocolBtn addTarget:self action:@selector(youpaifprotocolBtnClick) forControlEvents:UIControlEventTouchUpInside];
  252. protocolBtn.titleLabel.font = LCFont(12.0f);
  253. [protocolBgV addSubview:protocolBtn];
  254. [protocolBtn mas_makeConstraints:^(MASConstraintMaker *make) {
  255. make.left.equalTo(youpaipagreeProtocolBtn.mas_right);
  256. make.top.right.bottom.offset(0.0f);
  257. }];
  258. }
  259. - (void)youpaifupdateGpsCity{
  260. @weakify(self);
  261. [[LCLocationManager shareInstance]getLocationCity:^(NSString *city) {
  262. @strongify(self);
  263. if (![city isEqualToString:@""]) {
  264. self.youpaipgpsCity = [city substringWithRange:NSMakeRange(0, city.length - 1)];
  265. self.youpaipaddressBtn.selected = NO;
  266. }else{
  267. self.youpaipaddressBtn.selected = YES;
  268. }
  269. [self youpaifreloadCity];
  270. }];
  271. }
  272. - (void)youpaifreloadCity{
  273. if ([self.youpaipgpsCity isEqual:@""] || self.youpaipaddressBtn.selected) {
  274. [self.youpaipaddressBtn setTitle:@"关闭" forState:UIControlStateNormal];
  275. }else{
  276. [self.youpaipaddressBtn setTitle:self.youpaipgpsCity forState:UIControlStateNormal];
  277. }
  278. }
  279. - (void)touchesBegan:(NSSet<UITouch *> *)touches withEvent:(UIEvent *)event{
  280. [self endEditing:YES];
  281. }
  282. - (void)youpaifagreeProtocolBtnClick:(UIButton *)sender{
  283. sender.selected = !sender.selected;
  284. }
  285. - (void)youpaifprotocolBtnClick{
  286. YOUPAILZLiveProtocolWindow *vc = [[YOUPAILZLiveProtocolWindow alloc] init];
  287. vc.isTouchDismiss = YES;
  288. @weakify(self);
  289. [vc setYoupaipagreeStartLiveBlock:^(BOOL isAgreeProtocol) {
  290. @strongify(self);
  291. self.youpaipagreeProtocolBtn.selected = isAgreeProtocol;
  292. if (isAgreeProtocol) {
  293. [self youpaifstartBtnClick];
  294. }
  295. }];
  296. [[LCTools getCurrentVC] TFPresentVC:vc completion:^{}];
  297. }
  298. - (void)youpaifcloseBtnClick{
  299. if (self.youpaipcloseClickBlock != nil) {
  300. self.youpaipcloseClickBlock();
  301. }
  302. }
  303. - (void)youpaifbeautyBtnClick{
  304. if (self.youpaipbeautyClickBlock != nil) {
  305. self.youpaipbeautyClickBlock();
  306. }
  307. }
  308. - (void)youpaifchangeCameraBtnClick{
  309. if (self.youpaipchangeCameraClickBlock != nil) {
  310. self.youpaipchangeCameraClickBlock();
  311. }
  312. }
  313. - (void)youpaifaddressBtnClick:(UIButton *)sender{
  314. if (!sender.selected) {
  315. @weakify(self);
  316. LZAlertAction *cancelAction = [LZAlertAction actionWithTitle:@"坚决关闭" handler:^(LZAlertAction *action) {
  317. @strongify(self);
  318. sender.selected = !sender.selected;
  319. [self youpaifreloadCity];
  320. }];
  321. cancelAction.cornerRadius = 24.0f;
  322. cancelAction.bgColor = HexColorFromRGB(0x9F9DA5);
  323. LZAlertAction *confimAction = [LZAlertAction actionWithTitle:@"取消" handler:^(LZAlertAction *action) {
  324. }];
  325. confimAction.cornerRadius = 24.0f;
  326. confimAction.bgColor = [UIColor colorWithPatternImage:[LCTools ColorImage:CGSizeMake((KScreenWidth - 105.0f) / 2.0f, 48.0f) FromColors:@[ZYGradientOneColor,ZYGradientTwoColor] ByGradientType:GradientLeftToRight]];
  327. LZAlertWindow *alert = [LZAlertWindow alertWithTitle:@"提示" content:@"关闭定位,直播不会被附近人看到,直播间人数可能会减少,确认关闭吗?" action:@[cancelAction,confimAction]];
  328. [[LCTools getCurrentVC] TFPresentVC:alert completion:^{}];
  329. }else{
  330. sender.selected = !sender.selected;
  331. [self youpaifreloadCity];
  332. }
  333. }
  334. - (void)youpaifstartBtnClick{
  335. if (self.youpaipagreeProtocolBtn.selected) {
  336. self.youpaipstartBtn.userInteractionEnabled = NO;
  337. if (self.coverImage == nil) {
  338. [self youpaifstartLiveWithCover:@""];
  339. }else{
  340. [ZCHUDHelper showWithStatus:@"上传中..."];
  341. @weakify(self);
  342. [LCCommonHttp uploadWithImages:@[self.coverImage] Type:@"cover" successBlock:^(NSArray<NSString *> *ossImagePaths) {
  343. @strongify(self);
  344. [ZCHUDHelper dismiss];
  345. if (ossImagePaths.count != 0) {
  346. [self youpaifstartLiveWithCover:ossImagePaths[0]];
  347. }
  348. }];
  349. }
  350. }else{
  351. [self youpaifprotocolBtnClick];
  352. }
  353. }
  354. - (void)youpaifstartLiveWithCover:(NSString *)youpaipcover{
  355. if (youpaipcover.length == 0) {
  356. youpaipcover = self.youpaipcover;
  357. }
  358. @weakify(self);
  359. [LCHttpHelper requestWithURLString:StartLive parameters:@{@"room_title":self.youpaipliveTitleTF.text,@"room_cover":youpaipcover} needToken:YES type:HttpRequestTypePost success:^(id responseObject) {
  360. @strongify(self);
  361. NSDictionary* dict = (NSDictionary*)responseObject;
  362. NSInteger code = [[dict objectForKey:@"code"] integerValue];
  363. if (code == 0) {
  364. self.youpaipliveModel = [YOUPAILZLiveModel mj_objectWithKeyValues:[dict objectForKey:@"data"]];
  365. [[YOUPAILZLiveManagerListUtils shared] youpaifreloadManagerListWithLiveId:self.youpaipliveModel.youpaiplive_id];
  366. [LCSaveData saveLiveRankTopThere:self.youpaipliveModel.youpaiprank_top_three];
  367. [self youpaipcountDownL];
  368. }else{
  369. self.youpaipstartBtn.userInteractionEnabled = YES;
  370. [ZCHUDHelper showTitle:[dict objectForKey:@"message"]];
  371. }
  372. } failure:^(NSError *error) {
  373. @strongify(self);
  374. self.youpaipstartBtn.userInteractionEnabled = YES;
  375. [ZCHUDHelper showTitle:error.localizedDescription];
  376. }];
  377. }
  378. - (void)youpaifcountDown{
  379. [self addSubview:self.youpaipcountDownL];
  380. __block int timeout=3;
  381. dispatch_queue_t queue = dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0);
  382. dispatch_source_t _timer = dispatch_source_create(DISPATCH_SOURCE_TYPE_TIMER, 0, 0,queue);
  383. dispatch_source_set_timer(_timer,dispatch_walltime(NULL, 0),1.0*NSEC_PER_SEC, 0); //每秒执行
  384. dispatch_source_set_event_handler(_timer, ^{
  385. if(timeout <= -1){
  386. dispatch_source_cancel(_timer);
  387. dispatch_async(dispatch_get_main_queue(), ^{
  388. self.youpaipcountDownL.hidden = YES;
  389. if (self.youpaipstartLiveClickBlock != nil) {
  390. self.youpaipstartLiveClickBlock(self.youpaipliveModel);
  391. }
  392. });
  393. }else{
  394. NSString *strTime = [NSString stringWithFormat:@"%@",timeout <= 0 ? @"GO~" : @(timeout)];
  395. dispatch_async(dispatch_get_main_queue(), ^{
  396. self.youpaipcountDownL.hidden = NO;
  397. [self youpaifsetupShadowWithText:strTime view:self.youpaipcountDownL];
  398. self.youpaipcountDownL.transform = CGAffineTransformMakeScale(5.0f, 5.0f);
  399. [UIView animateWithDuration:0.25f animations:^{
  400. self.youpaipcountDownL.transform = CGAffineTransformMakeScale(1.0f, 1.0f);
  401. }];
  402. });
  403. timeout--;
  404. }
  405. });
  406. dispatch_resume(_timer);
  407. }
  408. - (UILabel *)youpaipcountDownL{
  409. if (_youpaipcountDownL == nil) {
  410. _youpaipcountDownL = [[UILabel alloc] initWithFrame:self.bounds];
  411. _youpaipcountDownL.textColor = [UIColor whiteColor];
  412. _youpaipcountDownL.textAlignment = NSTextAlignmentCenter;
  413. _youpaipcountDownL.text = @"3";
  414. _youpaipcountDownL.font = LCBoldFont(70.0f);
  415. }
  416. return _youpaipcountDownL;
  417. }
  418. - (void)youpaifsetupShadowWithText:(NSString *)text view:(UILabel *)view{
  419. NSMutableAttributedString *attributedString = [[NSMutableAttributedString alloc]initWithString:text];
  420. NSShadow *shadow = [[NSShadow alloc]init];
  421. // shadow.shadowBlurRadius = 1.0;
  422. shadow.shadowOffset = CGSizeMake(1, 1.5f);
  423. shadow.shadowColor = [HexColorFromRGB(0x000000) colorWithAlphaComponent:0.2f];
  424. [attributedString addAttribute:NSShadowAttributeName value:shadow range:NSMakeRange(0, text.length)];
  425. view.attributedText = attributedString;
  426. }
  427. - (void)youpaifopenAlbum{
  428. TZImagePickerController *imagePickerVc = [[TZImagePickerController alloc] initWithMaxImagesCount:1 columnNumber:4 delegate:self];
  429. [LCTZImageConfigHelper setDefaultTZImageConfig:imagePickerVc];
  430. imagePickerVc.allowTakePicture = YES; // 在内部显示拍照按钮
  431. imagePickerVc.allowPickingVideo = NO;//是否允许选择视频
  432. imagePickerVc.allowPickingImage = YES;//是否允许选择照片
  433. imagePickerVc.allowPickingOriginalPhoto = NO;//是否选择原图
  434. imagePickerVc.showSelectedIndex = YES; //显示图片序号
  435. imagePickerVc.allowCrop = NO;//是否允许裁剪
  436. // // 裁剪框的尺寸
  437. // imagePickerVc.cropRect = CGRectMake(0, KScreenHeight/2-(KScreenWidth/3.0*4)/2, KScreenWidth,KScreenWidth/3.0*4);
  438. // 4. 照片排列按修改时间升序
  439. imagePickerVc.sortAscendingByModificationDate = YES;//按时间倒序排列图片
  440. // You can get the photos by block, the same as by delegate.
  441. // 你可以通过block或者代理,来得到用户选择的照片.
  442. @weakify(self);
  443. [imagePickerVc setDidFinishPickingPhotosHandle:^(NSArray<UIImage *> *photos, NSArray *assets, BOOL isSelectOriginalPhoto) {
  444. @strongify(self);
  445. if (photos.count != 0) {
  446. self.coverImage = photos[0];
  447. [self.youpaipcoverBtn sd_setImageWithURL:[NSURL URLWithString:@""] forState:UIControlStateNormal];
  448. [self.youpaipcoverBtn setImage:self.coverImage forState:UIControlStateNormal];
  449. }
  450. }];
  451. [[LCTools getCurrentVC] presentViewController:imagePickerVc animated:YES completion:nil];
  452. }
  453. @end