Commit dd9033c9 authored by jz's avatar jz

update

parent 1a2a9e6b
......@@ -7,6 +7,7 @@
objects = {
/* Begin PBXBuildFile section */
04393781246AA49D00EAE014 /* File.swift in Sources */ = {isa = PBXBuildFile; fileRef = 04393780246AA49D00EAE014 /* File.swift */; };
0AB11836BD16E7A177F2CBDF /* Pods_GMBase_Example.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = A6E1B1FCE1B7696F7DE8B8E9 /* Pods_GMBase_Example.framework */; };
29C10D9EC61CDA2F6F466BD4 /* Pods_GMBase_Tests.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 7E15FCB251AFC31B335265AF /* Pods_GMBase_Tests.framework */; };
6003F58E195388D20070C39A /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 6003F58D195388D20070C39A /* Foundation.framework */; };
......@@ -40,6 +41,7 @@
/* End PBXContainerItemProxy section */
/* Begin PBXFileReference section */
04393780246AA49D00EAE014 /* File.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = File.swift; sourceTree = "<group>"; };
6003F58A195388D20070C39A /* GMBase_Example.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = GMBase_Example.app; sourceTree = BUILT_PRODUCTS_DIR; };
6003F58D195388D20070C39A /* Foundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Foundation.framework; path = System/Library/Frameworks/Foundation.framework; sourceTree = SDKROOT; };
6003F58F195388D20070C39A /* CoreGraphics.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreGraphics.framework; path = System/Library/Frameworks/CoreGraphics.framework; sourceTree = SDKROOT; };
......@@ -150,6 +152,7 @@
D32ECC461D33946600AEF0D0 /* GMListViewController.h */,
D32ECC471D33946600AEF0D0 /* GMListViewController.m */,
D3EB0CC21D33968300EEDD8B /* GMListViewModel.h */,
04393780246AA49D00EAE014 /* File.swift */,
D3EB0CC31D33968300EEDD8B /* GMListViewModel.m */,
D32ECC411D33840600AEF0D0 /* GMDetailController.h */,
D32ECC421D33840600AEF0D0 /* GMDetailController.m */,
......@@ -276,6 +279,7 @@
developmentRegion = English;
hasScannedForEncodings = 0;
knownRegions = (
English,
en,
Base,
);
......@@ -428,6 +432,7 @@
files = (
D32ECC481D33946600AEF0D0 /* GMListViewController.m in Sources */,
6003F59E195388D20070C39A /* GMAppDelegate.m in Sources */,
04393781246AA49D00EAE014 /* File.swift in Sources */,
6003F5A7195388D20070C39A /* GMViewController.m in Sources */,
D32ECC431D33840600AEF0D0 /* GMDetailController.m in Sources */,
D3EB0CC41D33968300EEDD8B /* GMListViewModel.m in Sources */,
......@@ -562,6 +567,7 @@
PRODUCT_BUNDLE_IDENTIFIER = "org.cocoapods.demo.${PRODUCT_NAME:rfc1034identifier}";
PRODUCT_NAME = "$(TARGET_NAME)";
SWIFT_OBJC_BRIDGING_HEADER = "GMBase/GMBase_Example-Bridging-Header.h";
SWIFT_OBJC_INTERFACE_HEADER_NAME = "$GMBase-Swift.h";
SWIFT_OPTIMIZATION_LEVEL = "-Onone";
WRAPPER_EXTENSION = app;
};
......@@ -583,6 +589,7 @@
PRODUCT_BUNDLE_IDENTIFIER = "org.cocoapods.demo.${PRODUCT_NAME:rfc1034identifier}";
PRODUCT_NAME = "$(TARGET_NAME)";
SWIFT_OBJC_BRIDGING_HEADER = "GMBase/GMBase_Example-Bridging-Header.h";
SWIFT_OBJC_INTERFACE_HEADER_NAME = "$GMBase-Swift.h";
WRAPPER_EXTENSION = app;
};
name = Release;
......@@ -591,6 +598,7 @@
isa = XCBuildConfiguration;
baseConfigurationReference = E10ABE29C983D16788B32755 /* Pods-GMBase_Tests.debug.xcconfig */;
buildSettings = {
ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES;
BUNDLE_LOADER = "$(TEST_HOST)";
FRAMEWORK_SEARCH_PATHS = (
"$(SDKROOT)/Developer/Library/Frameworks",
......@@ -615,6 +623,7 @@
isa = XCBuildConfiguration;
baseConfigurationReference = 78552CB3DCC72D38AB9DD053 /* Pods-GMBase_Tests.release.xcconfig */;
buildSettings = {
ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES;
BUNDLE_LOADER = "$(TEST_HOST)";
FRAMEWORK_SEARCH_PATHS = (
"$(SDKROOT)/Developer/Library/Frameworks",
......
//
// File.swift
// GMBase_Example
//
// Created by Q14 on 2020/5/12.
// Copyright © 2020 wangyang. All rights reserved.
//
import Foundation
......@@ -8,9 +8,10 @@ source 'git@git.wanmeizhensuo.com:gengmeiios/GMSpecs.git'
target 'GMBase_Example' do
pod 'GMBase', :path => '../'
pod 'GMShareSDK', :git => 'git@git.wanmeizhensuo.com:gengmeiios/GMShareSDK.git', :commit => '781efd64048ffb9c09099997c97aadb05668568b'
# pod 'SnapKit', '4.2.0'
pod 'GMShareSDK', '0.2.1'
pod 'GMFoundation', :path => '../../GMFoundation'
pod 'GMPhobos', :git => 'git@git.wanmeizhensuo.com:gengmeiios/GMPhobos.git', :commit => '7e58199898627699373ad6a9f87b875ab04b0927'
target 'GMBase_Tests' do
inherit! :search_paths
......
......@@ -84,7 +84,7 @@ PODS:
- GMRefresh (1.0.4):
- GMPhobos
- MJRefresh
- GMShareSDK (0.2.0):
- GMShareSDK (0.2.1):
- DouyinOpenSDK (= 1.4.1)
- GMFoundation
- GMJSONModel
......@@ -113,7 +113,8 @@ PODS:
DEPENDENCIES:
- GMBase (from `../`)
- GMFoundation (from `../../GMFoundation`)
- "GMShareSDK (from `git@git.wanmeizhensuo.com:gengmeiios/GMShareSDK.git`, commit `781efd64048ffb9c09099997c97aadb05668568b`)"
- "GMPhobos (from `git@git.wanmeizhensuo.com:gengmeiios/GMPhobos.git`, commit `7e58199898627699373ad6a9f87b875ab04b0927`)"
- GMShareSDK (= 0.2.1)
SPEC REPOS:
"git@git.wanmeizhensuo.com:gengmeiios/GMSpecs.git":
......@@ -122,8 +123,8 @@ SPEC REPOS:
- GMJSONModel
- GMKit
- GMNetService
- GMPhobos
- GMRefresh
- GMShareSDK
https://github.com/CocoaPods/Specs.git:
- AFNetworking
- BDOpenSDKKit
......@@ -145,14 +146,14 @@ EXTERNAL SOURCES:
:path: "../"
GMFoundation:
:path: "../../GMFoundation"
GMShareSDK:
:commit: 781efd64048ffb9c09099997c97aadb05668568b
:git: "git@git.wanmeizhensuo.com:gengmeiios/GMShareSDK.git"
GMPhobos:
:commit: 7e58199898627699373ad6a9f87b875ab04b0927
:git: "git@git.wanmeizhensuo.com:gengmeiios/GMPhobos.git"
CHECKOUT OPTIONS:
GMShareSDK:
:commit: 781efd64048ffb9c09099997c97aadb05668568b
:git: "git@git.wanmeizhensuo.com:gengmeiios/GMShareSDK.git"
GMPhobos:
:commit: 7e58199898627699373ad6a9f87b875ab04b0927
:git: "git@git.wanmeizhensuo.com:gengmeiios/GMPhobos.git"
SPEC CHECKSUMS:
AFNetworking: 5e0e199f73d8626b11e79750991f5d173d1f8b67
......@@ -165,9 +166,9 @@ SPEC CHECKSUMS:
GMJSONModel: 5e81a98de668e9f93cf6ff77869f77b0d1a806be
GMKit: ff2a77a9b85e13b4de333ec5eeb10b1ffef09756
GMNetService: 7c69e7981b4fac29657fad5fc86a0c453196b862
GMPhobos: 5748bbc39eb4242931ade197f7a2212ef13f2d28
GMPhobos: c09920b4a726363b902c2f14ba64e1ee1620d0e2
GMRefresh: c01ff8de5ada92e1362602fb6991f99124b7dbe3
GMShareSDK: 1d8f739d51083ab5cee25bb978b5e9bfbb206d05
GMShareSDK: a0725e2848d043aec84e787f6d233ac1546c1661
MagicalRecord: 53bed74b4323b930992a725be713e53b37d19755
Masonry: 678fab65091a9290e40e2832a55e7ab731aad201
MBProgressHUD: 1569cf7ace17a8bac47aabfbb8580a49690386d1
......@@ -180,6 +181,6 @@ SPEC CHECKSUMS:
WechatOpenSDK: 8b3ba4239193d1112205c139c94e21934e8f369a
Weibo_SDK: 5a4d08f7e1fedbb635435e4585c8c0439c7da089
PODFILE CHECKSUM: b70d32325af03093c872ec87f2100f40b8b1e2d8
PODFILE CHECKSUM: 78c2e567604571069245adf06b4c06623adb32cc
COCOAPODS: 1.9.1
......@@ -19,6 +19,9 @@ Pod::Spec.new do |s|
s.dependency 'GMKit'
s.dependency 'SDWebImage'
s.dependency 'GMShareSDK'
# s.dependency 'GMAlbum'
# SnapKit 4.2.0
# s.dependency 'SnapKit', '4.2.0'
s.swift_version = '4.2'
s.static_framework = true
......
......@@ -5,14 +5,17 @@
// Created by wangyang on 3/5/19.
// Copyright (c) 2019 Wanmei Creative. All rights reserved.
// 后期替代WMBaseViewController&WMBrowserViewController
@import GMShareSDK;
//#import <GMShareSDK/GMShareSDK.h>
#import "WMBaseViewController.h"
#import "GMClientH5Object.h"
//@import GMShareSDK;
#import <GMShareSDK/GMShareSDK.h>
#define kWebPhantom @"phantom"// 常用于H5新页面
#define kWebHybrid @"hybrid" // 常用于H5老页面
//#import <GMShareSDK/GMShareView.h>
#import <GMShareSDK/GMShareView.h>
////#import "GMShareView.h"
//#import <GMShareSDK/WMShareObject.h>
//#import <GMShareSDK/GMDiaryShareView.h>
#import <GMShareSDK/WMShareObject.h>
#import <GMShareSDK/GMDiaryShareView.h>
//#import <GMShareSDK/GMClientH5Object.h>
#import "GMWebViewModel.h"
......
......@@ -5,24 +5,32 @@
// Created by wangyang on 3/5/15.
// Copyright (c) 2015 Wanmei Creative. All rights reserved.
//
#import <MessageUI/MessageUI.h>
#import "GMBaseWebViewController.h"
//#import "AppDelegate+AppInit.h"
//#import "Gengmei-Swift.h"
#import "UIViewController+UrlScheme.h"
#import "WMBaseViewController+OCNavigationBar.h"
#import <mach/mach_time.h>
#import "GMCookieManager.h"
#import "GMWebViewUrlProtocol.h"
#import "GMWeixinShareView.h"
#import "WMShareObject.h"
@interface GMBaseWebViewController ()<MFMessageComposeViewControllerDelegate, GMCommonAlertViewDelegate,GMPhotoPickDismissDelegate,WKWebViewDelegate,GMShareViewDelegate, GMDiaryShareViewDelegate>
//#import "GMBase-Swift.h"
//#import "GMCookieManager.h"
//#import "GMWebViewUrlProtocol.h"
//#import <GMShareSDK/GMWeixinShareView.h>
#import <GMShareSDK/WMShareObject.h>
//#import "GMBase-prefix.pch"
//#import "GMCommonAlertView.swift"
//#import "GMWebViewComponent.swift"
//TODO: 待解决
//GMPhotoPickDismissDelegate
//GMCommonAlertViewDelegate
//MFMessageComposeViewControllerDelegat
@interface GMBaseWebViewController ()<UIWebViewDelegate, GMShareViewDelegate, GMDiaryShareViewDelegate>
{
// 是否显示微信快照和朋友圈快照
BOOL _isShowScreenshot;
GMAddressManager *_manager;
//TODO: 待思考
// GMAddressManager *_manager;
// 是否需要回调权限打开状态
BOOL _isSettingCallback;
......@@ -45,7 +53,8 @@
}
@property (nonatomic, assign) CGFloat animationDistance;
@property (nonatomic, strong) GMPlayerView *playBackView;
//TODO: 待思考
//@property (nonatomic, strong) GMPlayerView *playBackView;
@property (nonatomic, assign) BOOL goToAppSettingsPage;// 跳转到系统设置页面
@end
......@@ -57,13 +66,14 @@
[super initController];
self.viewModel = [GMWebViewModel new];
self.goToAppSettingsPage = NO;
// self.goToAppSettingsPage = NO;
self.webPageType = GMWebPageTypeNomal;
// 短信链接唤起app埋点 @author 李震(WMBrowserViewController)
if ([AppDelegate shareInstance].extraParam.isNonEmpty) {
self.extraParam = [AppDelegate shareInstance].extraParam;
[AppDelegate shareInstance].extraParam = @"";
}
//TODO: 待处理
// if ([AppDelegate shareInstance].extraParam.isNonEmpty) {
// self.extraParam = [AppDelegate shareInstance].extraParam;
// [AppDelegate shareInstance].extraParam = @"";
// }
}
#pragma mark - view lifeCycle
......@@ -710,15 +720,16 @@
}
if (_weixinShareObject != nil) {
GMWeixinShareView * weiXinShareView = [GMWeixinShareView shareView];
weiXinShareView.weixinShareObject = _weixinShareObject;
weiXinShareView.sourceController = self;
[self.view addSubview:weiXinShareView];
[weiXinShareView mas_makeConstraints:^(MASConstraintMaker *make) {
make.edges.equalTo(self.view).insets(UIEdgeInsetsZero);
}];
[weiXinShareView layoutIfNeeded];
[weiXinShareView showShareView:nil];
//TODO: GMWeixinShareView 待考虑
// GMWeixinShareView * weiXinShareView = [GMWeixinShareView shareView];
// weiXinShareView.weixinShareObject = _weixinShareObject;
// weiXinShareView.sourceController = self;
// [self.view addSubview:weiXinShareView];
// [weiXinShareView mas_makeConstraints:^(MASConstraintMaker *make) {
// make.edges.equalTo(self.view).insets(UIEdgeInsetsZero);
// }];
// [weiXinShareView layoutIfNeeded];
// [weiXinShareView showShareView:nil];
}
}
......@@ -1015,7 +1026,8 @@
}
if (info[@"cookie"] != nil && info[@"domain"] != nil) {
[GMCookieManager saveSessionId:info[@"cookie"] domain:info[@"domain"]];
//TODO:
// [GMCookieManager saveSessionId:info[@"cookie"] domain:info[@"domain"]];
}
}
......@@ -1218,45 +1230,46 @@
[self toast:@"复制成功"];
}
//TODO: 代思考
#pragma mark - GMPhotoPickDismissDelegate
- (void)dismissPhotoPick:(NSArray<GMEditPhotoInfo *> *)infos{
if (infos.count == 0) {
return ;
}
GMEditPhotoInfo *model = infos.firstObject;
UIImage *image = model.finshedImage;
NSString *remoteUrl = _isPrivatePhoto ? API_UPLOAD_IMAGE_SAFE : API_UPLOAD_IMAGE;
WMImageUploadOperation *operation = [[WMImageUploadOperation alloc]initWithImage:image url:remoteUrl withCompressionQuality:0.75];
[operation setImageUploadFinishBlock:^(NSDictionary *JSON) {
NSString *publicUrl = @"";
NSString *jsParam = @"";
if (_isPrivatePhoto) {
publicUrl = JSON[@"data"][@"public_url"];
NSString *privateUrl = JSON[@"data"][@"private_url"];
if ([publicUrl isNonEmpty] && [privateUrl isNonEmpty]) {
NSDictionary *data = @{_requestCoder : @{@"private_url": privateUrl, @"public_url" : publicUrl}};
NSData *jsParamData = [NSJSONSerialization dataWithJSONObject:data options:0 error:NULL];
jsParam = [[NSString alloc] initWithData:jsParamData encoding:NSUTF8StringEncoding];
}
} else {
publicUrl = JSON[@"data"][@"public_url"];
NSDictionary *data = @{_requestCoder : @{@"public_url" : publicUrl}};
NSData *jsParamData = [NSJSONSerialization dataWithJSONObject:data options:0 error:NULL];
jsParam = [[NSString alloc] initWithData:jsParamData encoding:NSUTF8StringEncoding];
}
NSString *jsString = [NSString stringWithFormat:@"gm.util.setPageData('%@')",jsParam];
[self.webCompent.webView evaluateJavaScript:jsString completionHandler:nil];
}];
[operation startUpload];
}
// 签到页弹窗提示后,点击不再提醒会调用
- (void)jsSignNeverNotify {
[self.navigationController popViewControllerAnimated:YES];
}
//- (void)dismissPhotoPick:(NSArray<GMEditPhotoInfo *> *)infos{
// if (infos.count == 0) {
// return ;
// }
// GMEditPhotoInfo *model = infos.firstObject;
// UIImage *image = model.finshedImage;
// NSString *remoteUrl = _isPrivatePhoto ? API_UPLOAD_IMAGE_SAFE : API_UPLOAD_IMAGE;
// WMImageUploadOperation *operation = [[WMImageUploadOperation alloc]initWithImage:image url:remoteUrl withCompressionQuality:0.75];
// [operation setImageUploadFinishBlock:^(NSDictionary *JSON) {
// NSString *publicUrl = @"";
// NSString *jsParam = @"";
//
// if (_isPrivatePhoto) {
// publicUrl = JSON[@"data"][@"public_url"];
// NSString *privateUrl = JSON[@"data"][@"private_url"];
// if ([publicUrl isNonEmpty] && [privateUrl isNonEmpty]) {
// NSDictionary *data = @{_requestCoder : @{@"private_url": privateUrl, @"public_url" : publicUrl}};
// NSData *jsParamData = [NSJSONSerialization dataWithJSONObject:data options:0 error:NULL];
// jsParam = [[NSString alloc] initWithData:jsParamData encoding:NSUTF8StringEncoding];
// }
// } else {
// publicUrl = JSON[@"data"][@"public_url"];
// NSDictionary *data = @{_requestCoder : @{@"public_url" : publicUrl}};
// NSData *jsParamData = [NSJSONSerialization dataWithJSONObject:data options:0 error:NULL];
// jsParam = [[NSString alloc] initWithData:jsParamData encoding:NSUTF8StringEncoding];
// }
//
// NSString *jsString = [NSString stringWithFormat:@"gm.util.setPageData('%@')",jsParam];
// [self.webCompent.webView evaluateJavaScript:jsString completionHandler:nil];
// }];
// [operation startUpload];
//}
//
//
//// 签到页弹窗提示后,点击不再提醒会调用
//- (void)jsSignNeverNotify {
// [self.navigationController popViewControllerAnimated:YES];
//}
- (int)jsIsUserLogin {
......@@ -1372,16 +1385,17 @@
}
- (void)didClickCommonAlertWithButtonIndex:(NSInteger)buttonIndex alertView:(GMCommonAlertView *)alertView {
[alertView dismiss];
if (buttonIndex == 1) {
//打开
[self goToAppSystemSettings];
self.goToAppSettingsPage = YES;
} else if (buttonIndex == 2) {
[self excuteSettingCallback:NO];
}
}
//TODO: 待解决
//- (void)didClickCommonAlertWithButtonIndex:(NSInteger)buttonIndex alertView:(GMCommonAlertView *)alertView {
// [alertView dismiss];
// if (buttonIndex == 1) {
// //打开
// [self goToAppSystemSettings];
// self.goToAppSettingsPage = YES;
// } else if (buttonIndex == 2) {
// [self excuteSettingCallback:NO];
// }
//}
- (void)excuteSettingCallback:(BOOL)setting {
......
This diff is collapsed.
This diff is collapsed.
......@@ -9,11 +9,13 @@
import UIKit
import GMKit
//TODO: 待考虑 SNAPKIT
@objc protocol GMCommonAlertViewDelegate: class {
func didClickCommonAlert(buttonIndex: Int, alertView: GMCommonAlertView)
}
@objcMembers
class GMCommonAlertView: GMView {
let alertView = GMView()
......@@ -35,70 +37,70 @@ class GMCommonAlertView: GMView {
alertView.backgroundColor = UIColor.white
alertView.layer.cornerRadius = 10
alertView.layer.masksToBounds = true
alertView.snp.makeConstraints { (make) in
make.centerY.equalToSuperview()
make.centerX.equalToSuperview()
make.size.equalTo(CGSize(width: 270, height: 280))
}
// alertView.snp.makeConstraints { (make) in
// make.centerY.equalToSuperview()
// make.centerX.equalToSuperview()
// make.size.equalTo(CGSize(width: 270, height: 280))
// }
let headerImage = GMImageView(image: UIImage(named: "notify_bell"))
addSubview(headerImage)
headerImage.snp.makeConstraints { (make) in
make.centerX.equalToSuperview()
make.top.equalTo(alertView.snp.top).offset(-38)
}
// headerImage.snp.makeConstraints { (make) in
// make.centerX.equalToSuperview()
// make.top.equalTo(alertView.snp.top).offset(-38)
// }
titleLabel.text = "打开推送通知"
alertView.addSubview(titleLabel)
titleLabel.snp.makeConstraints { (make) in
make.centerX.equalToSuperview()
make.top.equalTo(70)
}
// titleLabel.snp.makeConstraints { (make) in
// make.centerX.equalToSuperview()
// make.top.equalTo(70)
// }
subLabel.text = "第一时间接受TA的日记更新?"
alertView.addSubview(subLabel)
subLabel.snp.makeConstraints { (make) in
make.centerX.equalToSuperview()
make.top.equalTo(titleLabel.snp.bottom).offset(5)
}
// subLabel.snp.makeConstraints { (make) in
// make.centerX.equalToSuperview()
// make.top.equalTo(titleLabel.snp.bottom).offset(5)
// }
button1.setTitleColor(UIColor.white, for: UIControlState.normal)
button1.setTitle("确定打开", for: UIControlState.normal)
button1.setTitleColor(UIColor.white, for: UIControl.State.normal)
button1.setTitle("确定打开", for: UIControl.State.normal)
button1.gradualColor = [UIColor(hex: 0x51D3E7), UIColor(hex: 0x3BE7DA)]
button1.layer.cornerRadius = 20
button1.layer.masksToBounds = true
button1.titleLabel?.font = UIFont.gmFont(16)
button1.tag = 1001
button1.addTarget(self, action: #selector(GMCommonAlertView.buttonTapAction(_:)), for: UIControlEvents.touchUpInside)
button1.addTarget(self, action: #selector(GMCommonAlertView.buttonTapAction(_:)), for: UIControl.Event.touchUpInside)
alertView.addSubview(button1)
button1.snp.makeConstraints { (make) in
make.centerX.equalToSuperview()
make.top.equalTo(subLabel.snp.bottom).offset(15)
make.size.equalTo(CGSize(width: 200, height: 40))
}
// button1.snp.makeConstraints { (make) in
// make.centerX.equalToSuperview()
// make.top.equalTo(subLabel.snp.bottom).offset(15)
// make.size.equalTo(CGSize(width: 200, height: 40))
// }
// button1.setGradualChangeColor(colors: [UIColor(hex: 0x23E3E1), UIColor(hex: 0x2CD7E6)])
button2 = addButtonWith("不用打开", backgroundColor: UIColor.clear, titleColor: UIColor.mainVisual, borderColor: UIColor.mainVisual)
button2.addTarget(self, action: #selector(GMCommonAlertView.buttonTapAction(_:)), for: UIControlEvents.touchUpInside)
button2.addTarget(self, action: #selector(GMCommonAlertView.buttonTapAction(_:)), for: UIControl.Event.touchUpInside)
button2.tag = 1002
button2.titleLabel?.font = UIFont.gmFont(16)
alertView.addSubview(button2)
button2.snp.makeConstraints { (make) in
make.centerX.equalToSuperview()
make.top.equalTo(button1.snp.bottom).offset(15)
make.size.equalTo(CGSize(width: 200, height: 40))
}
// button2.snp.makeConstraints { (make) in
// make.centerX.equalToSuperview()
// make.top.equalTo(button1.snp.bottom).offset(15)
// make.size.equalTo(CGSize(width: 200, height: 40))
// }
button3 = addButtonWith("不再提醒", backgroundColor: UIColor.clear, titleColor: UIColor.auxiliaryTextLight, borderColor: UIColor.clear)
button3.addTarget(self, action: #selector(GMCommonAlertView.buttonTapAction(_:)), for: UIControlEvents.touchUpInside)
button3.addTarget(self, action: #selector(GMCommonAlertView.buttonTapAction(_:)), for: UIControl.Event.touchUpInside)
button3.tag = 1003
alertView.addSubview(button3)
button3.titleLabel?.font = UIFont.gmFont(14)
button3.snp.makeConstraints { (make) in
make.centerX.equalToSuperview()
make.top.equalTo(button2.snp.bottom).offset(10)
make.size.equalTo(CGSize(width: 200, height: 30))
}
// button3.snp.makeConstraints { (make) in
// make.centerX.equalToSuperview()
// make.top.equalTo(button2.snp.bottom).offset(10)
// make.size.equalTo(CGSize(width: 200, height: 30))
// }
}
// MARK: - 添加button
......@@ -111,16 +113,16 @@ class GMCommonAlertView: GMView {
return button
}
func buttonTapAction(_ sender: GMButton) {
@objc func buttonTapAction(_ sender: GMButton) {
let index = sender.tag - 1000
delegate?.didClickCommonAlert(buttonIndex: index, alertView: self)
}
@objc func show() {
UIApplication.shared.keyWindow?.addSubview(self)
self.snp.makeConstraints { (make) in
make.edges.equalTo(UIEdgeInsets.zero)
}
// self.snp.makeConstraints { (make) in
// make.edges.equalTo(UIEdgeInsets.zero)
// }
}
@objc func dismiss() {
......
//
// GMGradualButton.swift
// Gengmei
//
// Created by Terminator on 2017/7/12.
// Copyright © 2017年 更美互动信息科技有限公司. All rights reserved.
//
import UIKit
@objcMembers
open class GMGradualButton: GMButton {
// 如果gradualColor 和 disableColor同时有值,他们的count要是一样的
var gradualColor = [UIColor]()
var disableColor = [UIColor]()
var intriSize = CGSize.zero
override open var intrinsicContentSize: CGSize {
intriSize = super.intrinsicContentSize
if gradualColor.count > 0 {
setBackgroundImage(setGradualChangeColor(colors: gradualColor), for: .normal)
}
if disableColor.count > 0 {
setBackgroundImage(setGradualChangeColor(colors: disableColor), for: .disabled)
}
return intriSize
}
private func setGradualChangeColor(colors: [UIColor]) -> UIImage? {
let cfColors = colors.map { $0.cgColor }
UIGraphicsBeginImageContextWithOptions(super.intrinsicContentSize, true, 0)
let context = UIGraphicsGetCurrentContext()
let colorSpace = CGColorSpaceCreateDeviceRGB()
let gradient = CGGradient(colorsSpace: colorSpace, colors: cfColors as CFArray, locations: nil)
let start = CGPoint(x: self.intriSize.width, y: 0)
let end = CGPoint(x: 0, y: self.intriSize.height)
context?.drawLinearGradient(gradient!, start: start, end: end, options: [.drawsBeforeStartLocation, .drawsAfterEndLocation])
let image = UIGraphicsGetImageFromCurrentImageContext()
UIGraphicsEndImageContext()
return image
}
}
//
// GMWebEngine.swift
// GMDoctor
//
// Created by Thierry on 16/6/21.
// Copyright © 2016年 Gengmei. All rights reserved.
//
import Foundation
import WebKit
//import GMUtil
//import EVReflection
class GMWebEngine {
var cookies: [String] = []
weak var webView: WKWebView?
/// WKScriptMessageHandler
/// 添加一个名称,就可以让JS通过这个名称发送消息:valueName自定义名字
/// window.webkit.messageHandlers.valueName.postMessage({body: 'xxx'})
public var scriptMessageHandlerArray: [String] = [String]()
/// 默认最小字体字体
public var minFontSize: CGFloat = 0
/// 显示滚动条
public var isShowScrollIndicator: Bool = true
/// 开启手势交互
public var isAllowsBackForwardGestures: Bool = true
/// 是否允许加载javaScript
public var isjavaScriptEnabled: Bool = true
/// 是否允许JS自动打开窗口的,必须通过用户交互才能打开
public var isAutomaticallyJavaScript: Bool = true
/// 是否影藏进度条
public var isProgressHidden: Bool = false
/// 进度条高度
public var progressHeight: CGFloat = 1
/// 默认颜色
public var progressTrackTintColor: UIColor = UIColor.mainVisual
/// 加载颜色
public var progressTintColor: UIColor = UIColor.mainVisual
init() {
syncCookies()
}
/**
同步Cookie
WKWebView不再和NSURLSession共享Cookie,所以需要手动同步
*/
func syncCookies() {
cookies.removeAll()
for cookie in HTTPCookieStorage.shared.cookies(for: URL(string: GMServerDomains.apiHost)!)! {
let value = "\(cookie.name)=\(cookie.value)"
cookies.append(value)
}
}
/**
构造Ajax Cookie的Script
in 2.3.0
- returns script
*/
func ajaxCookie() -> String {
var source = ""
for cookie in HTTPCookieStorage.shared.cookies(for: URL(string: GMServerDomains.apiHost)!)! {
var string = "\(cookie.name)=\(cookie.value);domain=\(cookie.domain);path=\(cookie.path); expires=\(String(describing: cookie.expiresDate))"
if cookie.isSecure {
string = "\(string);secure=true"
}
source.append("document.cookie='\(string)';")
}
return source
}
func webCookie() -> String {
return cookies.joined(separator: ";")
// let cookieStr = cookies.joined(separator: ";")
// let paraStr = AppDelegate.shareInstance().urlCommonParameters()!.replacingOccurrences(of: "?", with: "")
// return "\(cookieStr);device_info=\(paraStr)"
}
/**
解析全局JS对象
*/
func parseJSPageData(_ complete: @escaping ([String: AnyObject]) -> Void) {
webView?.evaluateJavaScript("window.GLOBAL.pagedata") { (object, error) in
if let data = object as? [String: AnyObject] {
complete(data)
}
debugPrint(error ?? "")
}
}
}
This diff is collapsed.
//
// GMWebViewModel.h
// Gengmei
//
// Created by MoMo on 2019/12/12.
// Copyright © 2019 更美互动信息科技有限公司. All rights reserved.
//
#import "WMFetchDataViewModel.h"
/** webView 相关数据 */
NS_ASSUME_NONNULL_BEGIN
@interface GMWebViewModel : WMFetchDataViewModel
/// 问题页,置顶回答id
@property (nonatomic, copy) NSString *top_answer_id;
/** 回复问题id */
@property (nonatomic, copy) NSString *questionId;
/** 视频Token */
@property (nonatomic, copy) NSString *videoToken;
@end
NS_ASSUME_NONNULL_END
//
// GMWebViewModel.m
// Gengmei
//
// Created by MoMo on 2019/12/12.
// Copyright © 2019 更美互动信息科技有限公司. All rights reserved.
//
#import "GMWebViewModel.h"
@implementation GMWebViewModel
@end
//
// UIViewController+UrlScheme.h
// Gengmei
//
// Created by Thierry on 4/21/15.
// Copyright (c) 2015 Wanmeichuangyi. All rights reserved.
//
#import <UIKit/UIKit.h>
NS_ASSUME_NONNULL_BEGIN
@interface UIViewController (UrlScheme)
/**
区域埋点字段
*/
@property (nonatomic, strong) NSDictionary *referDict;
@end
NS_ASSUME_NONNULL_END
//
// UIViewController+UrlScheme.m
// Gengmei
//
// Created by Thierry on 4/21/15.
// Copyright (c) 2015 Wanmeichuangyi. All rights reserved.
//
#import <objc/runtime.h>
#import "UIViewController+UrlScheme.h"
@implementation UIViewController (UrlScheme)
#pragma mark -------------------
- (void)setReferDict:(NSDictionary *)referDict {
objc_setAssociatedObject(self, @selector(referDict), referDict, OBJC_ASSOCIATION_RETAIN);
}
- (NSDictionary *)referDict {
return objc_getAssociatedObject(self, @selector(referDict));
}
@end
//
// WMBaseViewController+OCNavigationBar.h
// Gengmei
//
// Created by wangyang on 16/7/8.
// Copyright © 2016年 更美互动信息科技有限公司. All rights reserved.
//
/*** @brief 右按钮的 按钮类型 */
typedef NS_ENUM(NSUInteger, OCBarButtonImageType){
/*** @brief 默认没有右按钮*/
OCBarButtonImageTypeDefault = 0,
/*** @brief 图片分享按钮 */
OCBarButtonImageTypeShare = 1,
/*** @brief 写新日记 */
OCBarButtonImageTypeDiary,
/*** @brief 搜索按钮。如果是继承于WMBaseViewController,这个option的action不需要单独实现,在base中已经实现了 */
OCBarButtonImageTypeSearch,
/*** @brief 分享返现,具体方法没有实现,请在子类中实现*/
OCBarButtonImageTypeShareCashback,
/*** @brief 客服,请在子类中实现*/
OCBarButtonImageTypeCustomerServices,
};
@interface WMBaseViewController (OCNavigationBar)
/**
* @brief 设置导航栏 左边默认是返回按钮
*
* @param title 导航tilte
* @param rightTitle 右边文字型的按钮
*/
- (void)setNavigateTitle:(NSString *)title rightButtonTitle:(NSString *)rightButtonTitle;
/**
* @brief 设置导航栏 左边默认是返回按钮
*
* @param title 导航tilte
* @param rightButton 右边是图片型的按钮
*/
- (void)setNavigateTitle:(NSString *)title rightButtonOption:(OCBarButtonImageType)rightButtonOption;
/**
* @brief 当右侧是标题按钮时,设置右侧标题按钮不同状态下的色值
* @param normalColor 常态下色值
* @param highlightColor 高亮下色值
* @param disableColor 失效下色值
*/
- (void)setRightTitleNormalColor:(UIColor *)normalColor highlightColor:(UIColor *)highlightColor disableColor:(UIColor *)disableColor;
/**
* @author wangyang
*
* 通过此方法可以返回一个rightButton图片名,用于navigationBar.rightIcon
*/
- (NSString *)navigationBarIconFromType:(OCBarButtonImageType)type;
@end
//
// WMBaseViewController+OCNavigationBar.m
// Gengmei
//
// Created by wangyang on 16/7/8.
// Copyright © 2016年 更美互动信息科技有限公司. All rights reserved.
//
#import "WMBaseViewController.h"
#import "WMBaseViewController+OCNavigationBar.h"
@implementation WMBaseViewController (OCNavigationBar)
- (void)setNavigateTitle:(NSString *)title rightButtonTitle:(NSString *)rightButtonTitle{
self.navigationBar.title = title;
self.navigationBar.rightTitle = rightButtonTitle;
}
- (void)setNavigateTitle:(NSString *)title rightButtonOption:(OCBarButtonImageType)rightButtonOption{
self.navigationBar.title = title;
self.navigationBar.rightIcon = [self navigationBarIconFromType:rightButtonOption];
}
- (NSString *)navigationBarIconFromType:(OCBarButtonImageType)type {
switch (type) {
case OCBarButtonImageTypeShare:
return @"share";
case OCBarButtonImageTypeDiary:
return @"write";
case OCBarButtonImageTypeSearch:
return @"search_green";
case OCBarButtonImageTypeShareCashback:
return @"share_cashback";
case OCBarButtonImageTypeCustomerServices:
return @"customer_service";
default:
return @"";
}
}
- (void)setRightTitleNormalColor:(UIColor *)normalColor highlightColor:(UIColor *)highlightColor disableColor:(UIColor *)disableColor{
if (normalColor) {
[self.navigationBar.rightButton setTitleColor:normalColor forState:UIControlStateNormal];
}
if (highlightColor) {
[self.navigationBar.rightButton setTitleColor:normalColor forState:UIControlStateHighlighted];
}
if (disableColor) {
[self.navigationBar.rightButton setTitleColor:normalColor forState:UIControlStateDisabled];
}
}
@end
//
// WMBaseViewController+OCNavigationBar.h
// Gengmei
//
// Created by wangyang on 16/7/8.
// Copyright © 2016年 更美互动信息科技有限公司. All rights reserved.
//
/*** @brief 右按钮的 按钮类型 */
typedef NS_ENUM(NSUInteger, OCBarButtonImageType){
/*** @brief 默认没有右按钮*/
OCBarButtonImageTypeDefault = 0,
/*** @brief 图片分享按钮 */
OCBarButtonImageTypeShare = 1,
/*** @brief 写新日记 */
OCBarButtonImageTypeDiary,
/*** @brief 搜索按钮。如果是继承于WMBaseViewController,这个option的action不需要单独实现,在base中已经实现了 */
OCBarButtonImageTypeSearch,
/*** @brief 分享返现,具体方法没有实现,请在子类中实现*/
OCBarButtonImageTypeShareCashback,
/*** @brief 客服,请在子类中实现*/
OCBarButtonImageTypeCustomerServices,
};
@interface WMBaseViewController (OCNavigationBar)
/**
* @brief 设置导航栏 左边默认是返回按钮
*
* @param title 导航tilte
* @param rightTitle 右边文字型的按钮
*/
- (void)setNavigateTitle:(NSString *)title rightButtonTitle:(NSString *)rightButtonTitle;
/**
* @brief 设置导航栏 左边默认是返回按钮
*
* @param title 导航tilte
* @param rightButton 右边是图片型的按钮
*/
- (void)setNavigateTitle:(NSString *)title rightButtonOption:(OCBarButtonImageType)rightButtonOption;
/**
* @brief 当右侧是标题按钮时,设置右侧标题按钮不同状态下的色值
* @param normalColor 常态下色值
* @param highlightColor 高亮下色值
* @param disableColor 失效下色值
*/
- (void)setRightTitleNormalColor:(UIColor *)normalColor highlightColor:(UIColor *)highlightColor disableColor:(UIColor *)disableColor;
/**
* @author wangyang
*
* 通过此方法可以返回一个rightButton图片名,用于navigationBar.rightIcon
*/
- (NSString *)navigationBarIconFromType:(OCBarButtonImageType)type;
@end
//
// WMBaseViewController+OCNavigationBar.m
// Gengmei
//
// Created by wangyang on 16/7/8.
// Copyright © 2016年 更美互动信息科技有限公司. All rights reserved.
//
#import "WMBaseViewController+OCNavigationBar.h"
@implementation WMBaseViewController (OCNavigationBar)
- (void)setNavigateTitle:(NSString *)title rightButtonTitle:(NSString *)rightButtonTitle{
self.navigationBar.title = title;
self.navigationBar.rightTitle = rightButtonTitle;
}
- (void)setNavigateTitle:(NSString *)title rightButtonOption:(OCBarButtonImageType)rightButtonOption{
self.navigationBar.title = title;
self.navigationBar.rightIcon = [self navigationBarIconFromType:rightButtonOption];
}
- (NSString *)navigationBarIconFromType:(OCBarButtonImageType)type {
switch (type) {
case OCBarButtonImageTypeShare:
return @"share";
case OCBarButtonImageTypeDiary:
return @"write";
case OCBarButtonImageTypeSearch:
return @"search_green";
case OCBarButtonImageTypeShareCashback:
return @"share_cashback";
case OCBarButtonImageTypeCustomerServices:
return @"customer_service";
default:
return @"";
}
}
- (void)setRightTitleNormalColor:(UIColor *)normalColor highlightColor:(UIColor *)highlightColor disableColor:(UIColor *)disableColor{
if (normalColor) {
[self.navigationBar.rightButton setTitleColor:normalColor forState:UIControlStateNormal];
}
if (highlightColor) {
[self.navigationBar.rightButton setTitleColor:normalColor forState:UIControlStateHighlighted];
}
if (disableColor) {
[self.navigationBar.rightButton setTitleColor:normalColor forState:UIControlStateDisabled];
}
}
@end
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment