Commit 4c3d8ed3 authored by lmj_521aiau@163.com's avatar lmj_521aiau@163.com

strings

UI   care   pay
parent 685d403c
This diff is collapsed.
...@@ -32,8 +32,8 @@ ...@@ -32,8 +32,8 @@
[self initializeIQKeyboardManager]; [self initializeIQKeyboardManager];
// 501f8a894329f4b57bbfee208a11676f // 501f8a894329f4b57bbfee208a11676f
// 9a9c6434d4271697fec9907d34722969 // 9a9c6434d4271697fec9907d34722969
// 31b57777dd1b5f65e45c1dab247e3950 // 31b57777dd1b5f65e45c1dab247e3950 //正式
[AMapServices sharedServices].apiKey = @"9a9c6434d4271697fec9907d34722969"; [AMapServices sharedServices].apiKey = @"31b57777dd1b5f65e45c1dab247e3950";
[AMapServices sharedServices].enableHTTPS = YES; [AMapServices sharedServices].enableHTTPS = YES;
[[FBSDKApplicationDelegate sharedInstance] application:application [[FBSDKApplicationDelegate sharedInstance] application:application
...@@ -49,15 +49,20 @@ ...@@ -49,15 +49,20 @@
[self logCollection]; [self logCollection];
// @available(iOS 13.0,*)表示iOS 13.0及以上的系统,后面的*表示所有平台
if (@available(iOS 13.0,*)) {
}else{
self.window = [[UIWindow alloc] init]; self.window = [[UIWindow alloc] init];
self.window.frame = [UIScreen mainScreen].bounds; self.window.frame = [UIScreen mainScreen].bounds;
self.window.backgroundColor = [UIColor whiteColor]; self.window.backgroundColor = [UIColor whiteColor];
// self.window.rootViewController = [[BaseViewController alloc] init];
// guide setting
// [ZJGuideConfig configWithWindow:self.window finishMainVC:[BaseTabBarViewController new]];
[self.window makeKeyAndVisible]; [self.window makeKeyAndVisible];
self.window.rootViewController = [[BaseViewController alloc] init];
// guide setting
[ZJGuideConfig configWithWindow:self.window finishMainVC:[BaseTabBarViewController new]];
}
return YES; return YES;
} }
......
...@@ -9,7 +9,7 @@ ...@@ -9,7 +9,7 @@
"scale" : "2x" "scale" : "2x"
}, },
{ {
"filename" : "1x副本-3.png", "filename" : "271594001232_.pic_hd.jpg",
"idiom" : "universal", "idiom" : "universal",
"scale" : "3x" "scale" : "3x"
} }
......
...@@ -9,7 +9,7 @@ ...@@ -9,7 +9,7 @@
"scale" : "2x" "scale" : "2x"
}, },
{ {
"filename" : "2x副本-3.png", "filename" : "281594001235_.pic_hd.jpg",
"idiom" : "universal", "idiom" : "universal",
"scale" : "3x" "scale" : "3x"
} }
......
...@@ -9,7 +9,7 @@ ...@@ -9,7 +9,7 @@
"scale" : "2x" "scale" : "2x"
}, },
{ {
"filename" : "3x副本-3.png", "filename" : "291594001238_.pic_hd.jpg",
"idiom" : "universal", "idiom" : "universal",
"scale" : "3x" "scale" : "3x"
} }
......
...@@ -9,7 +9,7 @@ ...@@ -9,7 +9,7 @@
"scale" : "2x" "scale" : "2x"
}, },
{ {
"filename" : "4x副本.png", "filename" : "301594001240_.pic_hd.jpg",
"idiom" : "universal", "idiom" : "universal",
"scale" : "3x" "scale" : "3x"
} }
......
...@@ -93,7 +93,7 @@ ...@@ -93,7 +93,7 @@
}]; }];
//beiZhuLabel //beiZhuLabel
self.beiZhuLabel = [UILabel labelWithtext:@"我是关心你的人" font:[UIFont systemFontOfSize:KFont(12)] textColor:[UIColor colorWithHex:0x999999] alignment:NSTextAlignmentCenter]; self.beiZhuLabel = [UILabel labelWithtext:kLocalizedString(@"care_who_prosen") font:[UIFont systemFontOfSize:KFont(12)] textColor:[UIColor colorWithHex:0x999999] alignment:NSTextAlignmentCenter];
[self.contentView addSubview:self.beiZhuLabel]; [self.contentView addSubview:self.beiZhuLabel];
[self.beiZhuLabel mas_makeConstraints:^(MASConstraintMaker *make) { [self.beiZhuLabel mas_makeConstraints:^(MASConstraintMaker *make) {
make.top.equalTo(self.nameLabel.mas_bottom).mas_offset(KScaleWidth(13)); make.top.equalTo(self.nameLabel.mas_bottom).mas_offset(KScaleWidth(13));
......
...@@ -10,8 +10,9 @@ ...@@ -10,8 +10,9 @@
#import "ZJIPAProductModel.h" #import "ZJIPAProductModel.h"
#import <StoreKit/StoreKit.h> #import <StoreKit/StoreKit.h>
#import "ZhiJi-Swift.h" #import "ZhiJi-Swift.h"
#import "SDCycleScrollView.h"
@interface ZJMemberPayViewController ()<UIScrollViewDelegate> @interface ZJMemberPayViewController ()<SDCycleScrollViewDelegate>
@property (nonatomic, weak) IBOutlet UITableView * tableView; @property (nonatomic, weak) IBOutlet UITableView * tableView;
...@@ -26,9 +27,8 @@ ...@@ -26,9 +27,8 @@
@property (nonatomic, copy) NSString *productID; @property (nonatomic, copy) NSString *productID;
@property (nonatomic, strong) ZJIPAProductModel *currentProduct; @property (nonatomic, strong) ZJIPAProductModel *currentProduct;
@property (nonatomic, strong) UIScrollView * scrollView; @property (nonatomic, strong) UIScrollView * mainScrollView;
@property (nonatomic, strong) UIPageControl * pageControl;
/** /**
* pagecontrol的属性 * pagecontrol的属性
*/ */
...@@ -83,64 +83,49 @@ ...@@ -83,64 +83,49 @@
- (void)setupView { - (void)setupView {
self.view.backgroundColor = [UIColor whiteColor]; self.view.backgroundColor = [UIColor whiteColor];
self.mainScrollView = [[UIScrollView alloc] initWithFrame:CGRectMake(0, 0, KScreenWidth, KScreenHeight)];
self.mainScrollView.showsHorizontalScrollIndicator = NO;
self.mainScrollView.showsVerticalScrollIndicator = NO;
self.mainScrollView.bounces = NO;
[self.view addSubview:self.mainScrollView];
[self.view sendSubviewToBack:self.mainScrollView];
self.images = @[@"goods_guide_0", @"goods_guide_1", @"goods_guide_2", @"goods_guide_3"]; self.images = @[@"goods_guide_0", @"goods_guide_1", @"goods_guide_2", @"goods_guide_3"];
UIImage * image = [UIImage imageNamed:[self.images firstObject]]; UIImage * image = [UIImage imageNamed:[self.images firstObject]];
self.scrollView = [[UIScrollView alloc] initWithFrame:CGRectMake(0, 0, KScreenWidth, KScreenHeight)]; SDCycleScrollView * banner = [SDCycleScrollView cycleScrollViewWithFrame:CGRectMake(0, 0, KScreenWidth, KScreenWidth*image.size.height/image.size.width) delegate:self placeholderImage:nil];
self.scrollView.contentSize = CGSizeMake(self.images.count * KScreenWidth, KScreenWidth*image.size.height/image.size.width); banner.showPageControl = NO;
self.scrollView.delegate = self; banner.localizationImageNamesGroup = self.images;
self.scrollView.showsHorizontalScrollIndicator = NO; banner.delegate = nil;
self.scrollView.showsVerticalScrollIndicator = NO; [self.mainScrollView addSubview:banner];
self.scrollView.pagingEnabled = YES; [self.mainScrollView sendSubviewToBack:banner];
self.scrollView.bounces = NO;
[self.view addSubview:self.scrollView];
[self.view sendSubviewToBack:self.scrollView];
if (@available(iOS 11.0, *)) { if (@available(iOS 11.0, *)) {
self.scrollView.contentInsetAdjustmentBehavior = UIScrollViewContentInsetAdjustmentNever; self.mainScrollView.contentInsetAdjustmentBehavior = UIScrollViewContentInsetAdjustmentNever;
} else { } else {
self.automaticallyAdjustsScrollViewInsets = NO; self.automaticallyAdjustsScrollViewInsets = NO;
} }
for (int i = 0; i < self.images.count; i ++) { UIView * bgView = [[UIView alloc] initWithFrame:CGRectMake(0, CGRectGetMaxY(banner.frame), KScreenWidth, KScaleWidth(90))];
bgView.backgroundColor = kColorFromRGB(0x568EFC);
UIImage * image = [UIImage imageNamed:self.images[i]]; [self.mainScrollView addSubview:bgView];
UIImageView * imV = [[UIImageView alloc] initWithImage:image]; [self.mainScrollView sendSubviewToBack:bgView];
imV.frame = CGRectMake(i * KScreenWidth, 0, KScreenWidth, KScreenWidth*image.size.height/image.size.width);
imV.userInteractionEnabled = YES;
[self.scrollView addSubview:imV];
UIButton *btn = [UIButton buttonWithType:UIButtonTypeCustom]; UIButton *btn = [UIButton buttonWithType:UIButtonTypeCustom];
btn.frame = CGRectMake((KScreenWidth-KScaleWidth(287))/2, imV.frame.size.height-KScaleWidth(79), KScaleWidth(287), KScaleWidth(69)); btn.frame = CGRectMake((KScreenWidth-KScaleWidth(287))/2, bgView.frame.size.height-KScaleWidth(79), KScaleWidth(287), KScaleWidth(69));
[btn setBackgroundImage:[UIImage imageNamed:@"goods_guide_confirm"] forState:UIControlStateNormal]; [btn setBackgroundImage:[UIImage imageNamed:@"goods_guide_confirm"] forState:UIControlStateNormal];
[btn setBackgroundImage:[UIImage imageNamed:@"goods_guide_confirm"] forState:UIControlStateHighlighted]; [btn setBackgroundImage:[UIImage imageNamed:@"goods_guide_confirm"] forState:UIControlStateHighlighted];
[btn addTarget:self action:@selector(confirmBtnClick:) forControlEvents:(UIControlEventTouchUpInside)]; [btn addTarget:self action:@selector(confirmBtnClick:) forControlEvents:(UIControlEventTouchUpInside)];
// if (i == self.images.count - 1) { [bgView addSubview:btn];
//// [btn addTarget:self action:@selector(clickLastBtn) forControlEvents:UIControlEventTouchUpInside];
// UIButton * backBtn = [UIButton buttonWithType:UIButtonTypeCustom];
// backBtn.frame = CGRectMake(KScreenWidth/3, KScreenHeight - (KScreenHeight/667)*100 , KScreenWidth/3, (KScreenHeight/667)*30);
// [backBtn setBackgroundImage:[UIImage imageNamed:@"guide_button"] forState:UIControlStateNormal];
//// [backBtn addTarget:self action:@selector(clickLastBtn) forControlEvents:UIControlEventTouchUpInside];
// [btn addSubview:backBtn];
// }
[imV addSubview:btn];
UILabel * priceLab = [[UILabel alloc] initWithFrame:CGRectMake(0, KScaleWidth(37), btn.frame.size.width, KScaleWidth(14))]; UILabel * priceLab = [[UILabel alloc] initWithFrame:CGRectMake(0, KScaleWidth(37), btn.frame.size.width, KScaleWidth(14))];
priceLab.textColor = [UIColor whiteColor]; priceLab.textColor = [UIColor whiteColor];
priceLab.font = [UIFont systemFontOfSize:KFont(12)]; priceLab.font = [UIFont systemFontOfSize:KFont(12)];
priceLab.textAlignment = NSTextAlignmentCenter; priceLab.textAlignment = NSTextAlignmentCenter;
priceLab.tag = 0x64+i; priceLab.tag = 0x64;
[btn addSubview:priceLab]; [btn addSubview:priceLab];
}
/** self.mainScrollView.contentSize = CGSizeMake(0, CGRectGetMaxY(bgView.frame));
UIPageControl
*/
// self.pageControl = [[UIPageControl alloc] initWithFrame:CGRectMake(0, KScreenHeight-self.originY-Bottom_Space-20, KScreenWidth, 20)];
// self.pageControl.enabled = NO;
// self.pageControl.numberOfPages = self.images.count;
// self.pageControl.currentPageIndicatorTintColor = self.currentPageColor?:kColorWithRGB(255, 255, 255);
// self.pageControl.pageIndicatorTintColor = self.otherPageColor?:kColorWithRGB(0, 0, 0);
// [self.view addSubview:self.pageControl];
} }
- (IBAction)confirmBtnClick:(id)sender{ - (IBAction)confirmBtnClick:(id)sender{
...@@ -224,29 +209,22 @@ ...@@ -224,29 +209,22 @@
- (void)updateScrollView:(NSString *)price des:(NSString *)des{ - (void)updateScrollView:(NSString *)price des:(NSString *)des{
if (price) { if (price) {
for (int count = 0 ; count < self.images.count ; count++) { UILabel * lab = [self.mainScrollView viewWithTag:0x64];
UILabel * lab = [self.scrollView viewWithTag:0x64+count];
lab.text = price; lab.text = price;
} }
}
if (des) { if (des) {
CGRect rect = [des boundingRectWithSize:CGSizeMake(KScreenWidth-KScaleWidth(20), MAXFLOAT) options:(NSStringDrawingUsesLineFragmentOrigin | NSStringDrawingUsesFontLeading) attributes:@{NSFontAttributeName:[UIFont systemFontOfSize:KFont(12)]} context:nil]; CGRect rect = [des boundingRectWithSize:CGSizeMake(KScreenWidth-KScaleWidth(20), MAXFLOAT) options:(NSStringDrawingUsesLineFragmentOrigin | NSStringDrawingUsesFontLeading) attributes:@{NSFontAttributeName:[UIFont systemFontOfSize:KFont(12)]} context:nil];
for (int count = 0 ; count < self.images.count ; count++) { UILabel * desLab = [[UILabel alloc] initWithFrame:CGRectMake(KScaleWidth(10), self.mainScrollView.contentSize.height, KScreenWidth-KScaleWidth(20), rect.size.height)];
UILabel * desLab = [[UILabel alloc] initWithFrame:CGRectMake(count*KScreenWidth+KScaleWidth(10), self.scrollView.contentSize.height, KScreenWidth-KScaleWidth(20), rect.size.height)];
desLab.textColor = [UIColor whiteColor]; desLab.textColor = [UIColor whiteColor];
desLab.text = des; desLab.text = des;
desLab.numberOfLines = 0; desLab.numberOfLines = 0;
desLab.font = [UIFont systemFontOfSize:KFont(12)]; desLab.font = [UIFont systemFontOfSize:KFont(12)];
[self.scrollView addSubview:desLab]; [self.mainScrollView addSubview:desLab];
if (count == self.images.count-1) {
self.scrollView.contentSize = CGSizeMake(self.scrollView.contentSize.width, self.scrollView.contentSize.height+rect.size.height);
self.scrollView.backgroundColor = kColorFromRGB(0x568EFC);
}
}
self.mainScrollView.contentSize = CGSizeMake(0, self.mainScrollView.contentSize.height+rect.size.height+KScaleWidth(10));
self.mainScrollView.backgroundColor = kColorFromRGB(0x568EFC);
} }
} }
...@@ -270,17 +248,4 @@ ...@@ -270,17 +248,4 @@
return 0; return 0;
} }
- (void)clickLastBtn{
// if (self.clickLastPage) {
// self.clickLastPage();
// }
}
#pragma mark - scrollview delegate
-(void)scrollViewDidEndDecelerating:(UIScrollView *)scrollView{
int page = scrollView.contentOffset.x / SCREEN_WIDTH;
self.pageControl.currentPage = page;
}
@end @end
...@@ -72,7 +72,7 @@ class ZTPurchaseManager: NSObject { ...@@ -72,7 +72,7 @@ class ZTPurchaseManager: NSObject {
switch error.code { switch error.code {
case .unknown: case .unknown:
print("Unknown error. Please contact support") print("Unknown error. Please contact support")
MBProgressHUD.showError("未知错误,请联系客服") MBProgressHUD.showError(NSLocalizedString("alert_unfriend_error", comment: ""), to: inView)
case .clientInvalid: print("Not allowed to make the payment") case .clientInvalid: print("Not allowed to make the payment")
case .paymentCancelled: break case .paymentCancelled: break
case .paymentInvalid: print("The purchase identifier was invalid") case .paymentInvalid: print("The purchase identifier was invalid")
...@@ -138,12 +138,12 @@ class ZTPurchaseManager: NSObject { ...@@ -138,12 +138,12 @@ class ZTPurchaseManager: NSObject {
else if results.restoredPurchases.count > 0 { else if results.restoredPurchases.count > 0 {
print("Restore Success: \(results.restoredPurchases)") print("Restore Success: \(results.restoredPurchases)")
if results.restoredPurchases.filter({ $0.needsFinishTransaction }).count <= 0 { if results.restoredPurchases.filter({ $0.needsFinishTransaction }).count <= 0 {
MBProgressHUD.showSuccess("恢复成功", to: UIApplication.shared.windows.first) MBProgressHUD.showSuccess(NSLocalizedString("alert_produce_restore_success", comment: ""), to: UIApplication.shared.windows.first)
success() success()
} }
} }
else { else {
MBProgressHUD.showError("没有商品可恢复") MBProgressHUD.showError(NSLocalizedString("alert_no_produce_restore", comment: ""))
print("Nothing to Restore") print("Nothing to Restore")
} }
} }
......
...@@ -183,7 +183,6 @@ ...@@ -183,7 +183,6 @@
// [self.searchApi AMapReGoecodeSearch: self.searchRequest]; // [self.searchApi AMapReGoecodeSearch: self.searchRequest];
self.location = [[CLLocation alloc] initWithLatitude:poi.location.latitude longitude:poi.location.longitude]; self.location = [[CLLocation alloc] initWithLatitude:poi.location.latitude longitude:poi.location.longitude];
[self reverseGeocodeLocation: self.location]; [self reverseGeocodeLocation: self.location];
}; };
[self.navigationController pushViewController:searchVC animated:true]; [self.navigationController pushViewController:searchVC animated:true];
} }
...@@ -223,7 +222,6 @@ ...@@ -223,7 +222,6 @@
- (void)mapView:(MAMapView *)mapView mapDidMoveByUser:(BOOL)wasUserAction { - (void)mapView:(MAMapView *)mapView mapDidMoveByUser:(BOOL)wasUserAction {
self.location = [[CLLocation alloc] initWithLatitude:mapView.centerCoordinate.latitude longitude:mapView.centerCoordinate.longitude]; self.location = [[CLLocation alloc] initWithLatitude:mapView.centerCoordinate.latitude longitude:mapView.centerCoordinate.longitude];
[self reverseGeocodeLocation: self.location]; [self reverseGeocodeLocation: self.location];
} }
/// Description /// Description
...@@ -257,6 +255,7 @@ ...@@ -257,6 +255,7 @@
NSLog(@"No results were returned."); NSLog(@"No results were returned.");
} else if (error != nil){ } else if (error != nil){
NSLog(@"An error occurred = %@", error); NSLog(@"An error occurred = %@", error);
[self reverseGeocodeLocation:self.location];
} }
}]; }];
} }
......
...@@ -164,6 +164,7 @@ ...@@ -164,6 +164,7 @@
codeTextfield = [[UITextField alloc] init]; codeTextfield = [[UITextField alloc] init];
codeTextfield.alpha = 0; codeTextfield.alpha = 0;
codeTextfield.keyboardType = UIKeyboardTypeNumberPad;
[codeTextfield limitTextLength:4]; [codeTextfield limitTextLength:4];
[codeTextfield addTarget:self action:@selector(textFieldChange:) forControlEvents:(UIControlEventEditingChanged)]; [codeTextfield addTarget:self action:@selector(textFieldChange:) forControlEvents:(UIControlEventEditingChanged)];
[codeView addSubview:codeTextfield]; [codeView addSubview:codeTextfield];
......
...@@ -80,7 +80,7 @@ ...@@ -80,7 +80,7 @@
} }
- (void)webView:(WKWebView *)webView didStartProvisionalNavigation:(null_unspecified WKNavigation *)navigation{ - (void)webView:(WKWebView *)webView didStartProvisionalNavigation:(null_unspecified WKNavigation *)navigation{
[MBProgressHUD showLoading:@"正在加载..." toView:self.view]; [MBProgressHUD showLoading:kLocalizedString(@"alert_loading") toView:self.view];
self.progressView.hidden = NO; self.progressView.hidden = NO;
self.progressView.transform = CGAffineTransformMakeScale(1.0f, 1.5f); self.progressView.transform = CGAffineTransformMakeScale(1.0f, 1.5f);
...@@ -112,7 +112,7 @@ ...@@ -112,7 +112,7 @@
//加载失败 //加载失败
- (void)webView:(WKWebView *)webView didFailProvisionalNavigation:(WKNavigation *)navigation withError:(NSError *)error { - (void)webView:(WKWebView *)webView didFailProvisionalNavigation:(WKNavigation *)navigation withError:(NSError *)error {
[MBProgressHUD hideHUDForView:self.view]; [MBProgressHUD hideHUDForView:self.view];
[MBProgressHUD showError:@"未知错误" toView:self.view]; [MBProgressHUD showError:[NSString stringWithFormat:@"%@%@", kLocalizedString(@"alert_unfriend"), kLocalizedString(@"alert_error")] toView:self.view];
} }
// 当web content处理完成时,会回调 // 当web content处理完成时,会回调
- (void)webViewWebContentProcessDidTerminate:(WKWebView *)webView { - (void)webViewWebContentProcessDidTerminate:(WKWebView *)webView {
...@@ -203,7 +203,7 @@ ...@@ -203,7 +203,7 @@
textField.text = defaultText; textField.text = defaultText;
}]; }];
[alertController addAction:([UIAlertAction actionWithTitle:@"完成" style:UIAlertActionStyleDefault handler:^(UIAlertAction * _Nonnull action) { [alertController addAction:([UIAlertAction actionWithTitle:kLocalizedString(@"alert_finish") style:UIAlertActionStyleDefault handler:^(UIAlertAction * _Nonnull action) {
completionHandler(alertController.textFields[0].text?:@""); completionHandler(alertController.textFields[0].text?:@"");
}])]; }])];
[self presentViewController:alertController animated:YES completion:nil]; [self presentViewController:alertController animated:YES completion:nil];
......
...@@ -58,7 +58,7 @@ ...@@ -58,7 +58,7 @@
//neiRongLabel //neiRongLabel
NSString *str = @" Family Mapp需要双方安装并加好友授权同意,APP付费方即可时刻关注对方的位置信息。\n 注册为Family Mapp会员或接受付费会员的好友邀请意味着 您将向平台和该付费会员提供地理位置,行为轨迹,高度等隐私信息。您正在使用的产品/服务及其功能将会收集、储存和使用您的相关信息,包括但不限于您的GPS定位、设备信息、手机通讯录等,您将受到《用户协议》和《隐私政策》的约束。您点击类似“同意并继续”按钮后或进行主动勾选同 义本协议等操作后,即表示您充分理解隐私政策内 容以及上述描述,并已同意授权平台按照隐私政策 内容合法收集、储存和使用您的个人信息。为保护 您的合法权益,请认真阅读并充分理解《隐私政策》内容。 Family Mapp需要双方安装并加好友授权同意,APP付费方即可时刻关注对方的位置信息。\n 注册为Family Mapp会员或接受付费会员的好友邀请意味着 您将向平台和该付费会员提供地理位置,行为轨迹,高度等隐私信息。您正在使用的产品/服务及其功能将会收集、储存和使用您的相关信息,包括但不限于您的GPS定位、设备信息、手机通讯录等,您将受到《用户协议》和《隐私政策》的约束。您点击类似“同意并继续”按钮后或进行主动勾选同 义本协议等操作后,即表示您充分理解隐私政策内 容以及上述描述,并已同意授权平台按照隐私政策 内容合法收集、储存和使用您的个人信息。为保护 您的合法权益,请认真阅读并充分理解《隐私政策》内容。Family Mapp需要双方安装并加好友授权同意,APP付费方即可时刻关注对方的位置信息。\n 注册为Family Mapp会员或接受付费会员的好友邀请意味着 您将向平台和该付费会员提供地理位置,行为轨迹,高度等隐私信息。您正在使用的产品/服务及其功能将会收集、储存和使用您的相关信息,包括但不限于您的GPS定位、设备信息、手机通讯录等,您将受到《用户协议》和《隐私政策》的约束。您点击类似“同意并继续”按钮后或进行主动勾选同 义本协议等操作后,即表示您充分理解隐私政策内 容以及上述描述,并已同意授权平台按照隐私政策 内容合法收集、储存和使用您的个人信息。为保护 您的合法权益,请认真阅读并充分理解《隐私政策》内容。Family Mapp需要双方安装并加好友授权同意,APP付费方即可时刻关注对方的位置信息。\n 注册为Family Mapp会员或接受付费会员的好友邀请意味着 您将向平台和该付费会员提供地理位置,行为轨迹,高度等隐私信息。您正在使用的产品/服务及其功能将会收集、储存和使用您的相关信息,包括但不限于您的GPS定位、设备信息、手机通讯录等,您将受到《用户协议》和《隐私政策》的约束。您点击类似“同意并继续”按钮后或进行主动勾选同 义本协议等操作后,即表示您充分理解隐私政策内 容以及上述描述,并已同意授权平台按照隐私政策 内容合法收集、储存和使用您的个人信息。为保护 您的合法权益,请认真阅读并充分理解《隐私政策》内容。"; NSString *str = kLocalizedString(@"alert_procotol");
_neiRongLabel = [UILabel labelWithtext:str font:[UIFont systemFontOfSize:KFont(13)] textColor:[UIColor colorWithHex:0x333333] alignment:NSTextAlignmentLeft]; _neiRongLabel = [UILabel labelWithtext:str font:[UIFont systemFontOfSize:KFont(13)] textColor:[UIColor colorWithHex:0x333333] alignment:NSTextAlignmentLeft];
//设置行间距 //设置行间距
NSMutableAttributedString *attributedStr = [[NSMutableAttributedString alloc] initWithString:str]; NSMutableAttributedString *attributedStr = [[NSMutableAttributedString alloc] initWithString:str];
......
...@@ -175,7 +175,7 @@ ...@@ -175,7 +175,7 @@
// do nothing // do nothing
} else if ([CLLocationManager authorizationStatus] ==kCLAuthorizationStatusDenied) { } else if ([CLLocationManager authorizationStatus] ==kCLAuthorizationStatusDenied) {
//定位不能用 //定位不能用
[AlertControllerTool alertControllerWithTitle:@"打开定位开关" message:kLocalizedString(@"alert_location_service") cancelTitle:kLocalizedString(@"alert_cancel") cancelBlock:^{ [AlertControllerTool alertControllerWithTitle:kLocalizedString(@"alert_location_switch") message:kLocalizedString(@"alert_location_service") cancelTitle:kLocalizedString(@"alert_cancel") cancelBlock:^{
} confirm:kLocalizedString(@"alert_setting") confirmBlock:^(id s) { } confirm:kLocalizedString(@"alert_setting") confirmBlock:^(id s) {
NSURL * url = [NSURL URLWithString:UIApplicationOpenSettingsURLString]; NSURL * url = [NSURL URLWithString:UIApplicationOpenSettingsURLString];
if([[UIApplication sharedApplication] canOpenURL:url]) { if([[UIApplication sharedApplication] canOpenURL:url]) {
......
...@@ -79,7 +79,7 @@ ...@@ -79,7 +79,7 @@
if (!_addPersonBtn) { if (!_addPersonBtn) {
_addPersonBtn = [[UIButton alloc]init]; _addPersonBtn = [[UIButton alloc]init];
[_addPersonBtn setTitle:@"添加紧急联系人" forState:UIControlStateNormal]; [_addPersonBtn setTitle:kLocalizedString(@"emergency_add_alert_style2") forState:UIControlStateNormal];
[_addPersonBtn setTitleColor:[UIColor colorWithHex:0xFFFFFF] forState:UIControlStateNormal]; [_addPersonBtn setTitleColor:[UIColor colorWithHex:0xFFFFFF] forState:UIControlStateNormal];
[_addPersonBtn setBackgroundImage:[UIImage imageNamed:@"Add_btn"] forState:UIControlStateNormal]; [_addPersonBtn setBackgroundImage:[UIImage imageNamed:@"Add_btn"] forState:UIControlStateNormal];
_addPersonBtn.titleLabel.font = [UIFont fontWithName:@"PingFangSC-Regular" size:KFont(18)]; _addPersonBtn.titleLabel.font = [UIFont fontWithName:@"PingFangSC-Regular" size:KFont(18)];
...@@ -160,7 +160,7 @@ ...@@ -160,7 +160,7 @@
- (void)deletePerson:(NSInteger)index{ - (void)deletePerson:(NSInteger)index{
[AlertControllerTool alertControllerWithTitle:kLocalizedString(@"alert_notice") message:@"确定要删除该紧急联系人吗?" cancelTitle:kLocalizedString(@"alert_cancel") cancelBlock:^{ [AlertControllerTool alertControllerWithTitle:kLocalizedString(@"alert_notice") message:kLocalizedString(@"emergency_delete_alert") cancelTitle:kLocalizedString(@"alert_cancel") cancelBlock:^{
} confirm:kLocalizedString(@"alert_confirm") confirmBlock:^(id s) { } confirm:kLocalizedString(@"alert_confirm") confirmBlock:^(id s) {
...@@ -240,7 +240,7 @@ ...@@ -240,7 +240,7 @@
[self updateUI]; [self updateUI];
}else{ }else{
[MBProgressHUD showError:[NSString stringWithFormat:@"获取紧急联系人列表失败\n%@", [response objectForKey:@"msg"]] toView:self.view]; [MBProgressHUD showError:[NSString stringWithFormat:@"%@", [response objectForKey:@"msg"]] toView:self.view];
} }
} failure:^(NSError * _Nonnull error) { } failure:^(NSError * _Nonnull error) {
......
...@@ -254,7 +254,7 @@ ...@@ -254,7 +254,7 @@
break; break;
case 4: case 4:
{ {
[AlertControllerTool alertControllerWithTitle:kLocalizedString(@"alert_notice") message:@"您确定要注销账户吗" cancelTitle:kLocalizedString(@"alert_cancel") cancelBlock:nil confirm:kLocalizedString(@"alert_confirm_style2") confirmBlock:^(id s) { [AlertControllerTool alertControllerWithTitle:kLocalizedString(@"alert_notice") message:kLocalizedString(@"alert_close_account") cancelTitle:kLocalizedString(@"alert_cancel") cancelBlock:nil confirm:kLocalizedString(@"alert_confirm_style2") confirmBlock:^(id s) {
[self userCancellation]; [self userCancellation];
} finishBlock:nil]; } finishBlock:nil];
} }
......
...@@ -55,11 +55,9 @@ ...@@ -55,11 +55,9 @@
[self.neiRongLabel mas_makeConstraints:^(MASConstraintMaker *make) { [self.neiRongLabel mas_makeConstraints:^(MASConstraintMaker *make) {
make.centerY.equalTo(self.contentView).mas_offset(KScaleWidth(0)); make.centerY.equalTo(self.contentView).mas_offset(KScaleWidth(0));
make.left.equalTo(self.mineIconimageView.mas_right).mas_offset(KScaleWidth(12.5)); make.left.equalTo(self.mineIconimageView.mas_right).mas_offset(KScaleWidth(12.5));
make.height.mas_offset(KScaleWidth(15)); make.height.mas_offset(KScaleWidth(20));
}]; }];
self.pushIcon = [[UIImageView alloc]init]; self.pushIcon = [[UIImageView alloc]init];
self.pushIcon.image = [UIImage imageNamed:@"Set_right_icon"]; self.pushIcon.image = [UIImage imageNamed:@"Set_right_icon"];
...@@ -72,7 +70,7 @@ ...@@ -72,7 +70,7 @@
}]; }];
//shiYongLabel //shiYongLabel
self.shiYongLabel = [UILabel labelWithtext:@"去使用" font:[UIFont systemFontOfSize:KFont(14)] textColor:[UIColor colorWithHex:0x999999] alignment:NSTextAlignmentCenter]; self.shiYongLabel = [UILabel labelWithtext:kLocalizedString(@"alert_use") font:[UIFont systemFontOfSize:KFont(14)] textColor:[UIColor colorWithHex:0x999999] alignment:NSTextAlignmentCenter];
[self.contentView addSubview:self.shiYongLabel]; [self.contentView addSubview:self.shiYongLabel];
[self.shiYongLabel mas_makeConstraints:^(MASConstraintMaker *make) { [self.shiYongLabel mas_makeConstraints:^(MASConstraintMaker *make) {
make.centerY.equalTo(self.contentView).mas_offset(KScaleWidth(0)); make.centerY.equalTo(self.contentView).mas_offset(KScaleWidth(0));
......
...@@ -58,14 +58,14 @@ ...@@ -58,14 +58,14 @@
- (void)fakeLaunchScreenWithWindow:(UIWindow *)window finishMainVC:(UIViewController *)finishMainVC{ - (void)fakeLaunchScreenWithWindow:(UIWindow *)window finishMainVC:(UIViewController *)finishMainVC{
self.currentWindow = window; self.currentWindow = window;
self.launchScreen = [[UINib nibWithNibName:@"LaunchScreenPlaceHolderView" bundle:nil] instantiateWithOwner:self options:nil].firstObject; self.launchScreen = [[UINib nibWithNibName:@"LaunchScreenPlaceHolderView" bundle:nil] instantiateWithOwner:self options:nil].firstObject;
self.launchScreen.frame = window.bounds;
[window addSubview:self.launchScreen]; [window addSubview:self.launchScreen];
UIWindow * v = [[UIApplication sharedApplication] delegate].window;
[self.launchScreen mas_makeConstraints:^(MASConstraintMaker *make) { [self.launchScreen mas_makeConstraints:^(MASConstraintMaker *make) {
make.left.right.top.bottom.equalTo(window); make.left.right.top.bottom.equalTo(window);
}]; }];
__weak typeof(self) weakSelf = self; __weak typeof(self) weakSelf = self;
self.launchScreen.finishCallBack = ^{ self.launchScreen.finishCallBack = ^{
dispatch_async(dispatch_get_global_queue(0, 0), ^{ dispatch_async(dispatch_get_global_queue(0, 0), ^{
dispatch_sync(dispatch_get_main_queue(), ^{ dispatch_sync(dispatch_get_main_queue(), ^{
......
...@@ -50,7 +50,7 @@ ...@@ -50,7 +50,7 @@
- (void)setTimer{ - (void)setTimer{
count = 5; count = 3;
timer = dispatch_source_create(DISPATCH_SOURCE_TYPE_TIMER, 0, 0, dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0)); timer = dispatch_source_create(DISPATCH_SOURCE_TYPE_TIMER, 0, 0, dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0));
dispatch_source_set_timer(timer, DISPATCH_TIME_NOW, 1 * NSEC_PER_SEC, 0 * NSEC_PER_SEC); dispatch_source_set_timer(timer, DISPATCH_TIME_NOW, 1 * NSEC_PER_SEC, 0 * NSEC_PER_SEC);
...@@ -59,10 +59,10 @@ ...@@ -59,10 +59,10 @@
if (self->count > 0) { if (self->count > 0) {
self->count--; self->count--;
}else{ }else{
dispatch_source_cancel(self->timer);
if (self.finishCallBack) { if (self.finishCallBack) {
self.finishCallBack(); self.finishCallBack();
} }
dispatch_source_cancel(self->timer);
} }
}); });
dispatch_resume(timer); dispatch_resume(timer);
......
//
// TAAbstractDotView.h
// TAPageControl
//
// Created by Tanguy Aladenise on 2015-01-22.
// Copyright (c) 2015 Tanguy Aladenise. All rights reserved.
//
#import <UIKit/UIKit.h>
@interface TAAbstractDotView : UIView
/**
* A method call let view know which state appearance it should take. Active meaning it's current page. Inactive not the current page.
*
* @param active BOOL to tell if view is active or not
*/
- (void)changeActivityState:(BOOL)active;
@end
//
// TAAbstractDotView.m
// TAPageControl
//
// Created by Tanguy Aladenise on 2015-01-22.
// Copyright (c) 2015 Tanguy Aladenise. All rights reserved.
//
#import "TAAbstractDotView.h"
@implementation TAAbstractDotView
- (id)init
{
@throw [NSException exceptionWithName:NSInternalInconsistencyException
reason:[NSString stringWithFormat:@"You must override %@ in %@", NSStringFromSelector(_cmd), self.class]
userInfo:nil];
}
- (void)changeActivityState:(BOOL)active
{
@throw [NSException exceptionWithName:NSInternalInconsistencyException
reason:[NSString stringWithFormat:@"You must override %@ in %@", NSStringFromSelector(_cmd), self.class]
userInfo:nil];
}
@end
//
// TAAnimatedDotView.h
// TAPageControl
//
// Created by Tanguy Aladenise on 2015-01-22.
// Copyright (c) 2015 Tanguy Aladenise. All rights reserved.
//
#import "TAAbstractDotView.h"
@interface TAAnimatedDotView : TAAbstractDotView
@property (nonatomic, strong) UIColor *dotColor;
@end
//
// TAAnimatedDotView.m
// TAPageControl
//
// Created by Tanguy Aladenise on 2015-01-22.
// Copyright (c) 2015 Tanguy Aladenise. All rights reserved.
//
#import "TAAnimatedDotView.h"
static CGFloat const kAnimateDuration = 1;
@implementation TAAnimatedDotView
- (instancetype)init
{
self = [super init];
if (self) {
[self initialization];
}
return self;
}
- (id)initWithFrame:(CGRect)frame
{
self = [super initWithFrame:frame];
if (self) {
[self initialization];
}
return self;
}
- (id)initWithCoder:(NSCoder *)aDecoder
{
self = [super initWithCoder:aDecoder];
if (self) {
[self initialization];
}
return self;
}
- (void)setDotColor:(UIColor *)dotColor
{
_dotColor = dotColor;
self.layer.borderColor = dotColor.CGColor;
}
- (void)initialization
{
_dotColor = [UIColor whiteColor];
self.backgroundColor = [UIColor clearColor];
self.layer.cornerRadius = CGRectGetWidth(self.frame) / 2;
self.layer.borderColor = [UIColor whiteColor].CGColor;
self.layer.borderWidth = 2;
}
- (void)changeActivityState:(BOOL)active
{
if (active) {
[self animateToActiveState];
} else {
[self animateToDeactiveState];
}
}
- (void)animateToActiveState
{
[UIView animateWithDuration:kAnimateDuration delay:0 usingSpringWithDamping:.5 initialSpringVelocity:-20 options:UIViewAnimationOptionCurveLinear animations:^{
self.backgroundColor = self->_dotColor;
self.transform = CGAffineTransformMakeScale(1.4, 1.4);
} completion:nil];
}
- (void)animateToDeactiveState
{
[UIView animateWithDuration:kAnimateDuration delay:0 usingSpringWithDamping:.5 initialSpringVelocity:0 options:UIViewAnimationOptionCurveLinear animations:^{
self.backgroundColor = [UIColor clearColor];
self.transform = CGAffineTransformIdentity;
} completion:nil];
}
@end
//
// TADotView.h
// TAPageControl
//
// Created by Tanguy Aladenise on 2015-01-22.
// Copyright (c) 2015 Tanguy Aladenise. All rights reserved.
//
#import "TAAbstractDotView.h"
@interface TADotView : TAAbstractDotView
@end
//
// TADotView.m
// TAPageControl
//
// Created by Tanguy Aladenise on 2015-01-22.
// Copyright (c) 2015 Tanguy Aladenise. All rights reserved.
//
#import "TADotView.h"
@implementation TADotView
- (instancetype)init
{
self = [super init];
if (self) {
[self initialization];
}
return self;
}
- (id)initWithFrame:(CGRect)frame
{
self = [super initWithFrame:frame];
if (self) {
[self initialization];
}
return self;
}
- (id)initWithCoder:(NSCoder *)aDecoder
{
self = [super initWithCoder:aDecoder];
if (self) {
[self initialization];
}
return self;
}
- (void)initialization
{
self.backgroundColor = [UIColor clearColor];
self.layer.cornerRadius = CGRectGetWidth(self.frame) / 2;
self.layer.borderColor = [UIColor whiteColor].CGColor;
self.layer.borderWidth = 2;
}
- (void)changeActivityState:(BOOL)active
{
if (active) {
self.backgroundColor = [UIColor whiteColor];
} else {
self.backgroundColor = [UIColor clearColor];
}
}
@end
//
// TAPageControl.h
// TAPageControl
//
// Created by Tanguy Aladenise on 2015-01-21.
// Copyright (c) 2015 Tanguy Aladenise. All rights reserved.
//
#import <UIKit/UIKit.h>
@protocol TAPageControlDelegate;
@interface TAPageControl : UIControl
/**
* Dot view customization properties
*/
/**
* The Class of your custom UIView, make sure to respect the TAAbstractDotView class.
*/
@property (nonatomic) Class dotViewClass;
/**
* UIImage to represent a dot.
*/
@property (nonatomic) UIImage *dotImage;
/**
* UIImage to represent current page dot.
*/
@property (nonatomic) UIImage *currentDotImage;
/**
* Dot size for dot views. Default is 8 by 8.
*/
@property (nonatomic) CGSize dotSize;
@property (nonatomic, strong) UIColor *dotColor;
/**
* Spacing between two dot views. Default is 8.
*/
@property (nonatomic) NSInteger spacingBetweenDots;
/**
* Page control setup properties
*/
/**
* Delegate for TAPageControl
*/
@property(nonatomic,assign) id<TAPageControlDelegate> delegate;
/**
* Number of pages for control. Default is 0.
*/
@property (nonatomic) NSInteger numberOfPages;
/**
* Current page on which control is active. Default is 0.
*/
@property (nonatomic) NSInteger currentPage;
/**
* Hide the control if there is only one page. Default is NO.
*/
@property (nonatomic) BOOL hidesForSinglePage;
/**
* Let the control know if should grow bigger by keeping center, or just get longer (right side expanding). By default YES.
*/
@property (nonatomic) BOOL shouldResizeFromCenter;
/**
* Return the minimum size required to display control properly for the given page count.
*
* @param pageCount Number of dots that will require display
*
* @return The CGSize being the minimum size required.
*/
- (CGSize)sizeForNumberOfPages:(NSInteger)pageCount;
@end
@protocol TAPageControlDelegate <NSObject>
@optional
- (void)TAPageControl:(TAPageControl *)pageControl didSelectPageAtIndex:(NSInteger)index;
@end
//
// TAPageControl.m
// TAPageControl
//
// Created by Tanguy Aladenise on 2015-01-21.
// Copyright (c) 2015 Tanguy Aladenise. All rights reserved.
//
#import "TAPageControl.h"
#import "TAAbstractDotView.h"
#import "TAAnimatedDotView.h"
#import "TADotView.h"
/**
* Default number of pages for initialization
*/
static NSInteger const kDefaultNumberOfPages = 0;
/**
* Default current page for initialization
*/
static NSInteger const kDefaultCurrentPage = 0;
/**
* Default setting for hide for single page feature. For initialization
*/
static BOOL const kDefaultHideForSinglePage = NO;
/**
* Default setting for shouldResizeFromCenter. For initialiation
*/
static BOOL const kDefaultShouldResizeFromCenter = YES;
/**
* Default spacing between dots
*/
static NSInteger const kDefaultSpacingBetweenDots = 8;
/**
* Default dot size
*/
static CGSize const kDefaultDotSize = {8, 8};
@interface TAPageControl()
/**
* Array of dot views for reusability and touch events.
*/
@property (strong, nonatomic) NSMutableArray *dots;
@end
@implementation TAPageControl
#pragma mark - Lifecycle
- (id)init
{
self = [super init];
if (self) {
[self initialization];
}
return self;
}
- (id)initWithFrame:(CGRect)frame
{
self = [super initWithFrame:frame];
if (self) {
[self initialization];
}
return self;
}
- (id)initWithCoder:(NSCoder *)aDecoder
{
self = [super initWithCoder:aDecoder];
if (self) {
[self initialization];
}
return self;
}
/**
* Default setup when initiating control
*/
- (void)initialization
{
self.dotViewClass = [TAAnimatedDotView class];
self.spacingBetweenDots = kDefaultSpacingBetweenDots;
self.numberOfPages = kDefaultNumberOfPages;
self.currentPage = kDefaultCurrentPage;
self.hidesForSinglePage = kDefaultHideForSinglePage;
self.shouldResizeFromCenter = kDefaultShouldResizeFromCenter;
}
#pragma mark - Touch event
- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event
{
UITouch *touch = [touches anyObject];
if (touch.view != self) {
NSInteger index = [self.dots indexOfObject:touch.view];
if ([self.delegate respondsToSelector:@selector(TAPageControl:didSelectPageAtIndex:)]) {
[self.delegate TAPageControl:self didSelectPageAtIndex:index];
}
}
}
#pragma mark - Layout
/**
* Resizes and moves the receiver view so it just encloses its subviews.
*/
- (void)sizeToFit
{
[self updateFrame:YES];
}
- (CGSize)sizeForNumberOfPages:(NSInteger)pageCount
{
return CGSizeMake((self.dotSize.width + self.spacingBetweenDots) * pageCount - self.spacingBetweenDots , self.dotSize.height);
}
/**
* Will update dots display and frame. Reuse existing views or instantiate one if required. Update their position in case frame changed.
*/
- (void)updateDots
{
if (self.numberOfPages == 0) {
return;
}
for (NSInteger i = 0; i < self.numberOfPages; i++) {
UIView *dot;
if (i < self.dots.count) {
dot = [self.dots objectAtIndex:i];
} else {
dot = [self generateDotView];
}
[self updateDotFrame:dot atIndex:i];
}
[self changeActivity:YES atIndex:self.currentPage];
[self hideForSinglePage];
}
/**
* Update frame control to fit current number of pages. It will apply required size if authorize and required.
*
* @param overrideExistingFrame BOOL to allow frame to be overriden. Meaning the required size will be apply no mattter what.
*/
- (void)updateFrame:(BOOL)overrideExistingFrame
{
CGPoint center = self.center;
CGSize requiredSize = [self sizeForNumberOfPages:self.numberOfPages];
// We apply requiredSize only if authorize to and necessary
if (overrideExistingFrame || ((CGRectGetWidth(self.frame) < requiredSize.width || CGRectGetHeight(self.frame) < requiredSize.height) && !overrideExistingFrame)) {
self.frame = CGRectMake(CGRectGetMinX(self.frame), CGRectGetMinY(self.frame), requiredSize.width, requiredSize.height);
if (self.shouldResizeFromCenter) {
self.center = center;
}
}
[self resetDotViews];
}
/**
* Update the frame of a specific dot at a specific index
*
* @param dot Dot view
* @param index Page index of dot
*/
- (void)updateDotFrame:(UIView *)dot atIndex:(NSInteger)index
{
// Dots are always centered within view
CGFloat x = (self.dotSize.width + self.spacingBetweenDots) * index + ( (CGRectGetWidth(self.frame) - [self sizeForNumberOfPages:self.numberOfPages].width) / 2);
CGFloat y = (CGRectGetHeight(self.frame) - self.dotSize.height) / 2;
dot.frame = CGRectMake(x, y, self.dotSize.width, self.dotSize.height);
}
#pragma mark - Utils
/**
* Generate a dot view and add it to the collection
*
* @return The UIView object representing a dot
*/
- (UIView *)generateDotView
{
UIView *dotView;
if (self.dotViewClass) {
dotView = [[self.dotViewClass alloc] initWithFrame:CGRectMake(0, 0, self.dotSize.width, self.dotSize.height)];
if ([dotView isKindOfClass:[TAAnimatedDotView class]] && self.dotColor) {
((TAAnimatedDotView *)dotView).dotColor = self.dotColor;
}
} else {
dotView = [[UIImageView alloc] initWithImage:self.dotImage];
dotView.frame = CGRectMake(0, 0, self.dotSize.width, self.dotSize.height);
}
if (dotView) {
[self addSubview:dotView];
[self.dots addObject:dotView];
}
dotView.userInteractionEnabled = YES;
return dotView;
}
/**
* Change activity state of a dot view. Current/not currrent.
*
* @param active Active state to apply
* @param index Index of dot for state update
*/
- (void)changeActivity:(BOOL)active atIndex:(NSInteger)index
{
if (self.dotViewClass) {
TAAbstractDotView *abstractDotView = (TAAbstractDotView *)[self.dots objectAtIndex:index];
if ([abstractDotView respondsToSelector:@selector(changeActivityState:)]) {
[abstractDotView changeActivityState:active];
} else {
NSLog(@"Custom view : %@ must implement an 'changeActivityState' method or you can subclass %@ to help you.", self.dotViewClass, [TAAbstractDotView class]);
}
} else if (self.dotImage && self.currentDotImage) {
UIImageView *dotView = (UIImageView *)[self.dots objectAtIndex:index];
dotView.image = (active) ? self.currentDotImage : self.dotImage;
}
}
- (void)resetDotViews
{
for (UIView *dotView in self.dots) {
[dotView removeFromSuperview];
}
[self.dots removeAllObjects];
[self updateDots];
}
- (void)hideForSinglePage
{
if (self.dots.count == 1 && self.hidesForSinglePage) {
self.hidden = YES;
} else {
self.hidden = NO;
}
}
#pragma mark - Setters
- (void)setNumberOfPages:(NSInteger)numberOfPages
{
_numberOfPages = numberOfPages;
// Update dot position to fit new number of pages
[self resetDotViews];
}
- (void)setSpacingBetweenDots:(NSInteger)spacingBetweenDots
{
_spacingBetweenDots = spacingBetweenDots;
[self resetDotViews];
}
- (void)setCurrentPage:(NSInteger)currentPage
{
// If no pages, no current page to treat.
if (self.numberOfPages == 0 || currentPage == _currentPage) {
_currentPage = currentPage;
return;
}
// Pre set
[self changeActivity:NO atIndex:_currentPage];
_currentPage = currentPage;
// Post set
[self changeActivity:YES atIndex:_currentPage];
}
- (void)setDotImage:(UIImage *)dotImage
{
_dotImage = dotImage;
[self resetDotViews];
self.dotViewClass = nil;
}
- (void)setCurrentDotImage:(UIImage *)currentDotimage
{
_currentDotImage = currentDotimage;
[self resetDotViews];
self.dotViewClass = nil;
}
- (void)setDotViewClass:(Class)dotViewClass
{
_dotViewClass = dotViewClass;
self.dotSize = CGSizeZero;
[self resetDotViews];
}
#pragma mark - Getters
- (NSMutableArray *)dots
{
if (!_dots) {
_dots = [[NSMutableArray alloc] init];
}
return _dots;
}
- (CGSize)dotSize
{
// Dot size logic depending on the source of the dot view
if (self.dotImage && CGSizeEqualToSize(_dotSize, CGSizeZero)) {
_dotSize = self.dotImage.size;
} else if (self.dotViewClass && CGSizeEqualToSize(_dotSize, CGSizeZero)) {
_dotSize = kDefaultDotSize;
return _dotSize;
}
return _dotSize;
}
@end
//
// SDCollectionViewCell.h
// SDCycleScrollView
//
// Created by aier on 15-3-22.
// Copyright (c) 2015年 GSD. All rights reserved.
//
/*
*********************************************************************************
*
* 🌟🌟🌟 新建SDCycleScrollView交流QQ群:185534916 🌟🌟🌟
*
* 在您使用此自动轮播库的过程中如果出现bug请及时以以下任意一种方式联系我们,我们会及时修复bug并
* 帮您解决问题。
* 新浪微博:GSD_iOS
* Email : gsdios@126.com
* GitHub: https://github.com/gsdios
*
* 另(我的自动布局库SDAutoLayout):
* 一行代码搞定自动布局!支持Cell和Tableview高度自适应,Label和ScrollView内容自适应,致力于
* 做最简单易用的AutoLayout库。
* 视频教程:http://www.letv.com/ptv/vplay/24038772.html
* 用法示例:https://github.com/gsdios/SDAutoLayout/blob/master/README.md
* GitHub:https://github.com/gsdios/SDAutoLayout
*********************************************************************************
*/
#import <UIKit/UIKit.h>
@interface SDCollectionViewCell : UICollectionViewCell
@property (weak, nonatomic) UIImageView *imageView;
@property (copy, nonatomic) NSString *title;
@property (nonatomic, strong) UIColor *titleLabelTextColor;
@property (nonatomic, strong) UIFont *titleLabelTextFont;
@property (nonatomic, strong) UIColor *titleLabelBackgroundColor;
@property (nonatomic, assign) CGFloat titleLabelHeight;
@property (nonatomic, assign) NSTextAlignment titleLabelTextAlignment;
@property (nonatomic, assign) BOOL hasConfigured;
/** 只展示文字轮播 */
@property (nonatomic, assign) BOOL onlyDisplayText;
@end
//
// SDCollectionViewCell.m
// SDCycleScrollView
//
// Created by aier on 15-3-22.
// Copyright (c) 2015年 GSD. All rights reserved.
//
/*
*********************************************************************************
*
* 🌟🌟🌟 新建SDCycleScrollView交流QQ群:185534916 🌟🌟🌟
*
* 在您使用此自动轮播库的过程中如果出现bug请及时以以下任意一种方式联系我们,我们会及时修复bug并
* 帮您解决问题。
* 新浪微博:GSD_iOS
* Email : gsdios@126.com
* GitHub: https://github.com/gsdios
*
* 另(我的自动布局库SDAutoLayout):
* 一行代码搞定自动布局!支持Cell和Tableview高度自适应,Label和ScrollView内容自适应,致力于
* 做最简单易用的AutoLayout库。
* 视频教程:http://www.letv.com/ptv/vplay/24038772.html
* 用法示例:https://github.com/gsdios/SDAutoLayout/blob/master/README.md
* GitHub:https://github.com/gsdios/SDAutoLayout
*********************************************************************************
*/
#import "SDCollectionViewCell.h"
#import "UIView+SDExtension.h"
@implementation SDCollectionViewCell
{
__weak UILabel *_titleLabel;
}
- (instancetype)initWithFrame:(CGRect)frame
{
if (self = [super initWithFrame:frame]) {
[self setupImageView];
[self setupTitleLabel];
}
return self;
}
- (void)setTitleLabelBackgroundColor:(UIColor *)titleLabelBackgroundColor
{
_titleLabelBackgroundColor = titleLabelBackgroundColor;
_titleLabel.backgroundColor = titleLabelBackgroundColor;
}
- (void)setTitleLabelTextColor:(UIColor *)titleLabelTextColor
{
_titleLabelTextColor = titleLabelTextColor;
_titleLabel.textColor = titleLabelTextColor;
}
- (void)setTitleLabelTextFont:(UIFont *)titleLabelTextFont
{
_titleLabelTextFont = titleLabelTextFont;
_titleLabel.font = titleLabelTextFont;
}
- (void)setupImageView
{
UIImageView *imageView = [[UIImageView alloc] init];
_imageView = imageView;
[self.contentView addSubview:imageView];
}
- (void)setupTitleLabel
{
UILabel *titleLabel = [[UILabel alloc] init];
_titleLabel = titleLabel;
_titleLabel.hidden = YES;
[self.contentView addSubview:titleLabel];
}
- (void)setTitle:(NSString *)title
{
_title = [title copy];
_titleLabel.text = [NSString stringWithFormat:@" %@", title];
if (_titleLabel.hidden) {
_titleLabel.hidden = NO;
}
}
-(void)setTitleLabelTextAlignment:(NSTextAlignment)titleLabelTextAlignment
{
_titleLabelTextAlignment = titleLabelTextAlignment;
_titleLabel.textAlignment = titleLabelTextAlignment;
}
- (void)layoutSubviews
{
[super layoutSubviews];
if (self.onlyDisplayText) {
_titleLabel.frame = self.bounds;
} else {
_imageView.frame = self.bounds;
CGFloat titleLabelW = self.sd_width;
CGFloat titleLabelH = _titleLabelHeight;
CGFloat titleLabelX = 0;
CGFloat titleLabelY = self.sd_height - titleLabelH;
_titleLabel.frame = CGRectMake(titleLabelX, titleLabelY, titleLabelW, titleLabelH);
}
}
@end
//
// SDCycleScrollView.h
// SDCycleScrollView
//
// Created by aier on 15-3-22.
// Copyright (c) 2015年 GSD. All rights reserved.
//
/*
*********************************************************************************
*
* 🌟🌟🌟 新建SDCycleScrollView交流QQ群:185534916 🌟🌟🌟
*
* 在您使用此自动轮播库的过程中如果出现bug请及时以以下任意一种方式联系我们,我们会及时修复bug并
* 帮您解决问题。
* 新浪微博:GSD_iOS
* Email : gsdios@126.com
* GitHub: https://github.com/gsdios
*
* 另(我的自动布局库SDAutoLayout):
* 一行代码搞定自动布局!支持Cell和Tableview高度自适应,Label和ScrollView内容自适应,致力于
* 做最简单易用的AutoLayout库。
* 视频教程:http://www.letv.com/ptv/vplay/24038772.html
* 用法示例:https://github.com/gsdios/SDAutoLayout/blob/master/README.md
* GitHub:https://github.com/gsdios/SDAutoLayout
*********************************************************************************
*/
/*
* 当前版本为1.62
* 更新日期:2016.04.21
*/
#import <UIKit/UIKit.h>
typedef enum {
SDCycleScrollViewPageContolAlimentRight,
SDCycleScrollViewPageContolAlimentCenter
} SDCycleScrollViewPageContolAliment;
typedef enum {
SDCycleScrollViewPageContolStyleClassic, // 系统自带经典样式
SDCycleScrollViewPageContolStyleAnimated, // 动画效果pagecontrol
SDCycleScrollViewPageContolStyleNone // 不显示pagecontrol
} SDCycleScrollViewPageContolStyle;
@class SDCycleScrollView;
@protocol SDCycleScrollViewDelegate <NSObject>
@optional
/** 点击图片回调 */
- (void)cycleScrollView:(SDCycleScrollView *)cycleScrollView didSelectItemAtIndex:(NSInteger)index;
/** 图片滚动回调 */
- (void)cycleScrollView:(SDCycleScrollView *)cycleScrollView didScrollToIndex:(NSInteger)index;
// 不需要自定义轮播cell的请忽略以下两个的代理方法
// ========== 轮播自定义cell ==========
/** 如果你需要自定义cell样式,请在实现此代理方法返回你的自定义cell的class。 */
- (Class)customCollectionViewCellClassForCycleScrollView:(SDCycleScrollView *)view;
/** 如果你需要自定义cell样式,请在实现此代理方法返回你的自定义cell的Nib。 */
- (UINib *)customCollectionViewCellNibForCycleScrollView:(SDCycleScrollView *)view;
/** 如果你自定义了cell样式,请在实现此代理方法为你的cell填充数据以及其它一系列设置 */
- (void)setupCustomCell:(UICollectionViewCell *)cell forIndex:(NSInteger)index cycleScrollView:(SDCycleScrollView *)view;
@end
@interface SDCycleScrollView : UIView
/** 初始轮播图(推荐使用) */
+ (instancetype)cycleScrollViewWithFrame:(CGRect)frame delegate:(id<SDCycleScrollViewDelegate>)delegate placeholderImage:(UIImage *)placeholderImage;
+ (instancetype)cycleScrollViewWithFrame:(CGRect)frame imageURLStringsGroup:(NSArray *)imageURLStringsGroup;
/** 本地图片轮播初始化方式 */
+ (instancetype)cycleScrollViewWithFrame:(CGRect)frame imageNamesGroup:(NSArray *)imageNamesGroup;
/** 本地图片轮播初始化方式2,infiniteLoop:是否无限循环 */
+ (instancetype)cycleScrollViewWithFrame:(CGRect)frame shouldInfiniteLoop:(BOOL)infiniteLoop imageNamesGroup:(NSArray *)imageNamesGroup;
////////////////////// 数据源API //////////////////////
/** 网络图片 url string 数组 */
@property (nonatomic, strong) NSArray *imageURLStringsGroup;
/** 每张图片对应要显示的文字数组 */
@property (nonatomic, strong) NSArray *titlesGroup;
/** 本地图片数组 */
@property (nonatomic, strong) NSArray *localizationImageNamesGroup;
////////////////////// 滚动控制API //////////////////////
/** 自动滚动间隔时间,默认2s */
@property (nonatomic, assign) CGFloat autoScrollTimeInterval;
/** 是否无限循环,默认Yes */
@property (nonatomic,assign) BOOL infiniteLoop;
/** 是否自动滚动,默认Yes */
@property (nonatomic,assign) BOOL autoScroll;
/** 图片滚动方向,默认为水平滚动 */
@property (nonatomic, assign) UICollectionViewScrollDirection scrollDirection;
@property (nonatomic, weak) id<SDCycleScrollViewDelegate> delegate;
/** block方式监听点击 */
@property (nonatomic, copy) void (^clickItemOperationBlock)(NSInteger currentIndex);
/** block方式监听滚动 */
@property (nonatomic, copy) void (^itemDidScrollOperationBlock)(NSInteger currentIndex);
/** 可以调用此方法手动控制滚动到哪一个index */
- (void)makeScrollViewScrollToIndex:(NSInteger)index;
/** 解决viewWillAppear时出现时轮播图卡在一半的问题,在控制器viewWillAppear时调用此方法 */
- (void)adjustWhenControllerViewWillAppera;
////////////////////// 自定义样式API //////////////////////
/** 轮播图片的ContentMode,默认为 UIViewContentModeScaleToFill */
@property (nonatomic, assign) UIViewContentMode bannerImageViewContentMode;
/** 占位图,用于网络未加载到图片时 */
@property (nonatomic, strong) UIImage *placeholderImage;
/** 是否显示分页控件 */
@property (nonatomic, assign) BOOL showPageControl;
/** 是否在只有一张图时隐藏pagecontrol,默认为YES */
@property(nonatomic) BOOL hidesForSinglePage;
/** 只展示文字轮播 */
@property (nonatomic, assign) BOOL onlyDisplayText;
/** pagecontrol 样式,默认为动画样式 */
@property (nonatomic, assign) SDCycleScrollViewPageContolStyle pageControlStyle;
/** 分页控件位置 */
@property (nonatomic, assign) SDCycleScrollViewPageContolAliment pageControlAliment;
/** 分页控件距离轮播图的底部间距(在默认间距基础上)的偏移量 */
@property (nonatomic, assign) CGFloat pageControlBottomOffset;
/** 分页控件距离轮播图的右边间距(在默认间距基础上)的偏移量 */
@property (nonatomic, assign) CGFloat pageControlRightOffset;
/** 分页控件小圆标大小 */
@property (nonatomic, assign) CGSize pageControlDotSize;
/** 当前分页控件小圆标颜色 */
@property (nonatomic, strong) UIColor *currentPageDotColor;
/** 其他分页控件小圆标颜色 */
@property (nonatomic, strong) UIColor *pageDotColor;
/** 当前分页控件小圆标图片 */
@property (nonatomic, strong) UIImage *currentPageDotImage;
/** 其他分页控件小圆标图片 */
@property (nonatomic, strong) UIImage *pageDotImage;
/** 轮播文字label字体颜色 */
@property (nonatomic, strong) UIColor *titleLabelTextColor;
/** 轮播文字label字体大小 */
@property (nonatomic, strong) UIFont *titleLabelTextFont;
/** 轮播文字label背景颜色 */
@property (nonatomic, strong) UIColor *titleLabelBackgroundColor;
/** 轮播文字label高度 */
@property (nonatomic, assign) CGFloat titleLabelHeight;
/** 轮播文字label对齐方式 */
@property (nonatomic, assign) NSTextAlignment titleLabelTextAlignment;
/** 滚动手势禁用(文字轮播较实用) */
- (void)disableScrollGesture;
////////////////////// 清除缓存API //////////////////////
/** 清除图片缓存(此次升级后统一使用SDWebImage管理图片加载和缓存) */
+ (void)clearImagesCache;
/** 清除图片缓存(兼容旧版本方法) */
- (void)clearCache;
@end
This diff is collapsed.
//
// UIView+SDExtension.h
// SDRefreshView
//
// Created by aier on 15-2-23.
// Copyright (c) 2015年 GSD. All rights reserved.
//
/*
*********************************************************************************
*
* 🌟🌟🌟 新建SDCycleScrollView交流QQ群:185534916 🌟🌟🌟
*
* 在您使用此自动轮播库的过程中如果出现bug请及时以以下任意一种方式联系我们,我们会及时修复bug并
* 帮您解决问题。
* 新浪微博:GSD_iOS
* Email : gsdios@126.com
* GitHub: https://github.com/gsdios
*
* 另(我的自动布局库SDAutoLayout):
* 一行代码搞定自动布局!支持Cell和Tableview高度自适应,Label和ScrollView内容自适应,致力于
* 做最简单易用的AutoLayout库。
* 视频教程:http://www.letv.com/ptv/vplay/24038772.html
* 用法示例:https://github.com/gsdios/SDAutoLayout/blob/master/README.md
* GitHub:https://github.com/gsdios/SDAutoLayout
*********************************************************************************
*/
#import <UIKit/UIKit.h>
#define SDColorCreater(r, g, b, a) [UIColor colorWithRed:(r / 255.0) green:(g / 255.0) blue:(b / 255.0) alpha:a]
@interface UIView (SDExtension)
@property (nonatomic, assign) CGFloat sd_height;
@property (nonatomic, assign) CGFloat sd_width;
@property (nonatomic, assign) CGFloat sd_y;
@property (nonatomic, assign) CGFloat sd_x;
@end
//
// UIView+SDExtension.m
// SDRefreshView
//
// Created by aier on 15-2-23.
// Copyright (c) 2015年 GSD. All rights reserved.
//
/*
*********************************************************************************
*
* 🌟🌟🌟 新建SDCycleScrollView交流QQ群:185534916 🌟🌟🌟
*
* 在您使用此自动轮播库的过程中如果出现bug请及时以以下任意一种方式联系我们,我们会及时修复bug并
* 帮您解决问题。
* 新浪微博:GSD_iOS
* Email : gsdios@126.com
* GitHub: https://github.com/gsdios
*
* 另(我的自动布局库SDAutoLayout):
* 一行代码搞定自动布局!支持Cell和Tableview高度自适应,Label和ScrollView内容自适应,致力于
* 做最简单易用的AutoLayout库。
* 视频教程:http://www.letv.com/ptv/vplay/24038772.html
* 用法示例:https://github.com/gsdios/SDAutoLayout/blob/master/README.md
* GitHub:https://github.com/gsdios/SDAutoLayout
*********************************************************************************
*/
/*
*********************************************************************************
*
* 在您使用此自动轮播库的过程中如果出现bug请及时以以下任意一种方式联系我们,我们会及时修复bug并
* 帮您解决问题。
* 新浪微博:GSD_iOS
* Email : gsdios@126.com
* GitHub: https://github.com/gsdios
*
* 另(我的自动布局库SDAutoLayout):
* 一行代码搞定自动布局!支持Cell和Tableview高度自适应,Label和ScrollView内容自适应,致力于
* 做最简单易用的AutoLayout库。
* 视频教程:http://www.letv.com/ptv/vplay/24038772.html
* 用法示例:https://github.com/gsdios/SDAutoLayout/blob/master/README.md
* GitHub:https://github.com/gsdios/SDAutoLayout
*********************************************************************************
*/
#import "UIView+SDExtension.h"
@implementation UIView (SDExtension)
- (CGFloat)sd_height
{
return self.frame.size.height;
}
- (void)setSd_height:(CGFloat)sd_height
{
CGRect temp = self.frame;
temp.size.height = sd_height;
self.frame = temp;
}
- (CGFloat)sd_width
{
return self.frame.size.width;
}
- (void)setSd_width:(CGFloat)sd_width
{
CGRect temp = self.frame;
temp.size.width = sd_width;
self.frame = temp;
}
- (CGFloat)sd_y
{
return self.frame.origin.y;
}
- (void)setSd_y:(CGFloat)sd_y
{
CGRect temp = self.frame;
temp.origin.y = sd_y;
self.frame = temp;
}
- (CGFloat)sd_x
{
return self.frame.origin.x;
}
- (void)setSd_x:(CGFloat)sd_x
{
CGRect temp = self.frame;
temp.origin.x = sd_x;
self.frame = temp;
}
@end
...@@ -23,12 +23,12 @@ ...@@ -23,12 +23,12 @@
self.window = [[UIWindow alloc] initWithWindowScene:(UIWindowScene *)scene]; self.window = [[UIWindow alloc] initWithWindowScene:(UIWindowScene *)scene];
self.window.frame = [UIScreen mainScreen].bounds; self.window.frame = [UIScreen mainScreen].bounds;
self.window.backgroundColor = [UIColor whiteColor]; self.window.backgroundColor = [UIColor whiteColor];
// self.window.rootViewController = [[BaseViewController alloc] init]; self.window.rootViewController = [[BaseViewController alloc] init];
[self.window makeKeyAndVisible];
//guide setting //guide setting
[ZJGuideConfig configWithWindow:self.window finishMainVC:[BaseTabBarViewController new]]; [ZJGuideConfig configWithWindow:self.window finishMainVC:[BaseTabBarViewController new]];
[self.window makeKeyAndVisible];
} }
- (void)scene:(UIScene *)scene continueUserActivity:(NSUserActivity *)userActivity { - (void)scene:(UIScene *)scene continueUserActivity:(NSUserActivity *)userActivity {
......
...@@ -26,6 +26,13 @@ appName = "Family Mapp"; ...@@ -26,6 +26,13 @@ appName = "Family Mapp";
"alert_decline"="Decline"; "alert_decline"="Decline";
"alert_unknow"="Unknow"; "alert_unknow"="Unknow";
"alert_later"="Please try again later"; "alert_later"="Please try again later";
"alert_location_switch"="Turn on location";
"alert_close_account"="Are you sure you want to close your account";
"alert_finish"="Finish";
"alert_use"="To use";
"alert_unfriend_error"="Unknown error. Please contact support";
"alert_no_produce_restore"="No commodities to recover";
"alert_produce_restore_success"="Restore success";
"alert_location_setting"="Location permission is not enabled, please enter the system [Settings]> [%@]> [Location] to allow access to location information in order to draw your track"; "alert_location_setting"="Location permission is not enabled, please enter the system [Settings]> [%@]> [Location] to allow access to location information in order to draw your track";
"alert_location_enble"="Go to enable"; "alert_location_enble"="Go to enable";
...@@ -44,6 +51,8 @@ appName = "Family Mapp"; ...@@ -44,6 +51,8 @@ appName = "Family Mapp";
"alert_loading"="Loading..."; "alert_loading"="Loading...";
"alert_noMore"="No more data"; "alert_noMore"="No more data";
"alert_procotol"=" We intend to provide transparency and ensureuser privacy. Please learn more about how weprocess the data can be obtained about you oryour device. By continuing you confirm that you acknowledge and accept our Privacy Policy.";
//tabbar //tabbar
"tabbar_care"="Friends"; "tabbar_care"="Friends";
"tabbar_mine"="Me"; "tabbar_mine"="Me";
...@@ -77,6 +86,7 @@ appName = "Family Mapp"; ...@@ -77,6 +86,7 @@ appName = "Family Mapp";
"care_footer_details_1"="Enter the number of the location of the friend you want to find and continue"; "care_footer_details_1"="Enter the number of the location of the friend you want to find and continue";
"care_Emergency_alarm"="Emergency alarm"; "care_Emergency_alarm"="Emergency alarm";
"care_who_prosen"="I'm one of those who care about you";
//map //map
"map_add"="Add"; "map_add"="Add";
...@@ -89,7 +99,7 @@ appName = "Family Mapp"; ...@@ -89,7 +99,7 @@ appName = "Family Mapp";
"friend_note"="Note:"; "friend_note"="Note:";
"friend_setting"="Friend Settings"; "friend_setting"="Friend Settings";
"friend_phone"="Mobile Number"; "friend_phone"="Mobile Number";
"friend_nickname"="Nickname"; "friend_nickname"="Name";
"friend_click_name"="Click to enter your name for him"; "friend_click_name"="Click to enter your name for him";
"friend_reminder"="Arrival/Departure Location Reminder"; "friend_reminder"="Arrival/Departure Location Reminder";
"friend_Friendship"="Friendship"; "friend_Friendship"="Friendship";
...@@ -141,7 +151,7 @@ appName = "Family Mapp"; ...@@ -141,7 +151,7 @@ appName = "Family Mapp";
//mine //mine
"mine_sign"="Sign in"; "mine_sign"="Sign in";
"mine_click_nickname"="Click nickname to edit"; "mine_click_nickname"="Click name to edit";
"mine_unlock_more_services"="Unlock to access Premium services"; "mine_unlock_more_services"="Unlock to access Premium services";
"mine_unlock"="Unlock"; "mine_unlock"="Unlock";
"mine_userID"="User ID"; "mine_userID"="User ID";
...@@ -180,6 +190,8 @@ appName = "Family Mapp"; ...@@ -180,6 +190,8 @@ appName = "Family Mapp";
"emergency_none"="No Emergency Contact"; "emergency_none"="No Emergency Contact";
"emergency_add"="Add"; "emergency_add"="Add";
"emergency_add_alert"="Add Emergency Contacts (up to 3)"; "emergency_add_alert"="Add Emergency Contacts (up to 3)";
"emergency_add_alert_style2"="Add Emergency Contacts";
"emergency_delete_alert"="Are you sure you want to delete this emergency contact?";
"emergency_enter_phone"="Enter a phone number"; "emergency_enter_phone"="Enter a phone number";
"emergency_contact"="Contact"; "emergency_contact"="Contact";
"emergency_friend_select"="Select from friend list"; "emergency_friend_select"="Select from friend list";
......
...@@ -25,6 +25,13 @@ appName = "Family Mapp"; ...@@ -25,6 +25,13 @@ appName = "Family Mapp";
"alert_decline"="拒绝"; "alert_decline"="拒绝";
"alert_unknow"="未知"; "alert_unknow"="未知";
"alert_later"="请稍后再试"; "alert_later"="请稍后再试";
"alert_location_switch"="打开定位开关";
"alert_close_account"="您确定要注销账户吗";
"alert_finish"="完成";
"alert_use"="去使用";
"alert_unfriend_error"="未知错误,请联系客服";
"alert_no_produce_restore"="没有商品可恢复";
"alert_produce_restore_success"="恢复成功";
"alert_location_setting"="位置权限未开启,请进入系统[设置]> [%@] > [位置]中允许访问位置信息,用来绘制您的轨迹"; "alert_location_setting"="位置权限未开启,请进入系统[设置]> [%@] > [位置]中允许访问位置信息,用来绘制您的轨迹";
"alert_location_enble"="去开启"; "alert_location_enble"="去开启";
...@@ -43,6 +50,8 @@ appName = "Family Mapp"; ...@@ -43,6 +50,8 @@ appName = "Family Mapp";
"alert_loading"="加载中..."; "alert_loading"="加载中...";
"alert_noMore"="没有更多了"; "alert_noMore"="没有更多了";
"alert_procotol"=" 我们打算提供透明度并确保用户隐私,请详细了解我们如何处理有关您的设备的数据。点击同意并继续,即代表您确认您确认并接受我们的隐私政策。";
//tabbar //tabbar
"tabbar_care"="我关心的人"; "tabbar_care"="我关心的人";
"tabbar_mine"="我的"; "tabbar_mine"="我的";
...@@ -75,6 +84,7 @@ appName = "Family Mapp"; ...@@ -75,6 +84,7 @@ appName = "Family Mapp";
"care_footer_details_1"="输入您想要查找的朋友的电话号码"; "care_footer_details_1"="输入您想要查找的朋友的电话号码";
"care_Emergency_alarm"="紧急报警"; "care_Emergency_alarm"="紧急报警";
"care_who_prosen"="我是关心你的人";
//map //map
"map_add"="添加"; "map_add"="添加";
...@@ -179,6 +189,8 @@ appName = "Family Mapp"; ...@@ -179,6 +189,8 @@ appName = "Family Mapp";
"emergency_none"="您还没有添加紧急联系人哦~"; "emergency_none"="您还没有添加紧急联系人哦~";
"emergency_add"="去添加"; "emergency_add"="去添加";
"emergency_add_alert"="添加紧急联系人(最多3位)"; "emergency_add_alert"="添加紧急联系人(最多3位)";
"emergency_add_alert_style2"="添加紧急联系人";
"emergency_delete_alert"="确定要删除该紧急联系人吗?";
"emergency_enter_phone"="请输入手机号码"; "emergency_enter_phone"="请输入手机号码";
"emergency_contact"="通讯录"; "emergency_contact"="通讯录";
"emergency_friend_select"="在好友列表中选择"; "emergency_friend_select"="在好友列表中选择";
......
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