| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308 |
- //
- // MOChangeLanguageVC.m
- // MiMoLive
- //
- // Created by SuperC on 2023/10/23.
- //
- #import "MOChangeLanguageVC.h"
- #import "MOLanguageBaseCell.h"
- #import "AppDelegate.h"
- #import "NSBundle+language.h"
- #import <MJRefreshConfig.h>
- #import "TUIEmojiConfig.h"
- #import <TUICore/TUIGlobalization.h>
- @implementation MOLanguaeModel
- @end
- @interface MOChangeLanguageVC ()<UITableViewDelegate,UITableViewDataSource>
- @property (weak, nonatomic) IBOutlet UITableView *tableView;
- @property (nonatomic, strong) NSMutableArray *dataArr;
- @property (weak, nonatomic) IBOutlet UIButton *finishBtn;
- @end
- @implementation MOChangeLanguageVC
- - (void)viewWillAppear:(BOOL)animated
- {
- [super viewWillAppear:animated];
- [self.navigationController setNavigationBarHidden:NO animated:animated];
-
- [self mo_v2_setNavLeftItemWithImage:[UIImage imageNamed:@"v_2_icon_new_back_black"] andBackgroundImg:nil AndBgColor:nil];
- }
- - (void)viewDidLoad {
- [super viewDidLoad];
-
- self.navigationItem.title = NSLocalString(@"mimo_Language");
-
- [self setupUI];
- }
- - (IBAction)finishBtnClick:(id)sender {
- MOLanguaeModel *selectModel;
-
- for (MOLanguaeModel *model in self.dataArr) {
- if(model.isChoose){
- selectModel = model;
- }
- }
-
- // 将指定语言设置为首选语言
- [[NSUserDefaults standardUserDefaults] setObject:@[selectModel.tagStr] forKey:@"AppleLanguages"];
- [[NSUserDefaults standardUserDefaults] synchronize];
-
- [NSBundle setLanguage:selectModel.tagStr];
-
- //MJRefresh切换多语言
- [[MJRefreshConfig defaultConfig] setLanguageCode:selectModel.tagStr];
-
- //腾讯IM切换多语言
- [TUIGlobalization setPreferredLanguage:selectModel.tagStr];
- [self reportToServer];
-
- // 重新设置
- [self resetRootViewController];
-
- SendNotification(@"kNotification_ChangeLanguage")
- }
- - (void)reportToServer {
- [kHttpManager toSetLanguageWithParams:nil andBlock:^(id _Nonnull data, NSError * _Nonnull error) {
- if (kCode_Success) {
- MOLogV(@"setLanguage success");
- }
- }];
- }
- //重新设置
- -(void)resetRootViewController
- {
- MOMainTabController *mainTabbar = [MOMainTabController sharedSingleton];
- mainTabbar.resetAfterChangeLanguage = YES;
- [mainTabbar toResetTabbar];
-
- [[TUIEmojiConfig defaultConfig] updateEmojiGroups];//更新Emoji配置
- }
- - (void)setupUI{
-
- self.view.backgroundColor = [MOTools colorWithHexString:@"#F3F4FA"];
-
- NSArray *languages = [NSLocale preferredLanguages];
- MOLogV(@"支持的languages:%@",languages);
-
- self.finishBtn.layer.cornerRadius = 16;
- self.finishBtn.layer.masksToBounds = YES;
- [self.finishBtn setFont:[MOTextTools mediumFont:16]];
- [self.finishBtn setTitle:NSLocalString(@"mimo_Finish") forState:UIControlStateNormal];
- NSArray *colorArr = @[kBaseColorLeft,kBaseColorRight];
- UIImage *image = [MOTools createGradientRectImageWithBounds:CGRectMake(0, 0, (SCREENWIDTH - 37.0 * 2), 48.0) Colors:colorArr GradientType:0];
- [self.finishBtn setBackgroundImage:image forState:UIControlStateNormal];
-
- self.tableView.delegate = self;
- self.tableView.dataSource = self;
-
- self.tableView.estimatedRowHeight = 0;
- self.tableView.estimatedSectionHeaderHeight = 0;
- self.tableView.estimatedSectionFooterHeight = 0;
- self.tableView.backgroundColor = [UIColor clearColor];
-
- //iOS15适配
- if (@available(iOS 15.0, *))
- {
- self.tableView.sectionHeaderTopPadding = 0;
- }
-
- [self.tableView registerClass:[MOLanguageBaseCell class] forCellReuseIdentifier:MOLanguageBaseCell_ID];
-
- // MOLanguaeModel *sysModel = [[MOLanguaeModel alloc] init];
- // sysModel.title = @"Follow the system";
- // sysModel.tagStr = @"";
- // if(languages.count == 0){
- // sysModel.isChoose = YES;
- // }
- // else{
- // sysModel.isChoose = NO;
- // }
- // [self.dataArr addObject:sysModel];
-
- //en-CN
- MOLanguaeModel *usModel = [[MOLanguaeModel alloc] init];
- usModel.title = @"English";
-
- usModel.isChoose = NO;
- if(languages.count > 0){
- NSString *languageStr = [languages firstObject];
- if([languageStr hasPrefix:@"en"]){
- usModel.isChoose = YES;
- }
-
- BOOL isHaveSuppot = NO;
- for (NSString *languaStr in languages) {
- if([languageStr hasPrefix:@"zh-Hans"]){
- isHaveSuppot = YES;
- }
-
- if([languageStr hasPrefix:@"id"]){
- isHaveSuppot = YES;
- }
- }
-
- if(!isHaveSuppot){
- usModel.isChoose = YES;
- }
- }
-
- usModel.tagStr = @"en";
-
- [self.dataArr addObject:usModel];
-
- //zh-Hans-CN
- MOLanguaeModel *zhModel = [[MOLanguaeModel alloc] init];
- zhModel.title = @"Simplified Chinese";
- zhModel.tagStr = @"zh-Hans";
- zhModel.isChoose = NO;
-
- zhModel.isChoose = NO;
- if(languages.count > 0){
- NSString *languageStr = [languages firstObject];
- if([languageStr hasPrefix:@"zh-Hans"]){
- zhModel.isChoose = YES;
- }
- }
-
- [self.dataArr addObject:zhModel];
-
- //id
- MOLanguaeModel *idModel = [[MOLanguaeModel alloc] init];
- idModel.title = @"Indonesian";
-
- idModel.isChoose = NO;
- if(languages.count > 0){
- NSString *languageStr = [languages firstObject];
- if([languageStr hasPrefix:@"id"]){
- idModel.isChoose = YES;
- }
- }
-
- idModel.tagStr = @"id";
-
- [self.dataArr addObject:idModel];
-
- [self.tableView reloadData];
- }
- #pragma mark - UITableViewDelegate,UITableViewDataSource
- - (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView{
- return 1;
- }
- - (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section{
- return self.dataArr.count;
- }
- - (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath{
- return 56.0;
- }
- - (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath{
-
- MOLanguaeModel *model = self.dataArr[indexPath.row];
-
- MOLanguageBaseCell *cell = [tableView dequeueReusableCellWithIdentifier:MOLanguageBaseCell_ID];
- if (cell == nil){
- cell = [[MOLanguageBaseCell alloc]initWithStyle:UITableViewCellStyleDefault reuseIdentifier:MOLanguageBaseCell_ID];
- }
- POCellStyleDataModel *styleModel = [POCellStyleDataModel new];
- styleModel.edgeInsets = UIEdgeInsetsMake(0, 12, 0, 12);
- CGFloat cellWidth = SCREENWIDTH - 12.0 * 2;
- styleModel.styleViewSize = CGSizeMake(cellWidth, 56);
- styleModel.noShadowSide = PONoShadowSideAll;
- styleModel.cellBackgroundColor = [MOTools colorWithHexString:@"#FFFFFF"];
-
- if(indexPath.row == 0){
- styleModel.corners = UIRectCornerTopLeft | UIRectCornerTopRight;
- styleModel.cornerRadius = 16.0;
- }
- else if (indexPath.row == self.dataArr.count - 1){
- styleModel.corners = UIRectCornerBottomLeft | UIRectCornerBottomRight;
- styleModel.cornerRadius = 16.0;
- }
- else{
- styleModel.corners = UIRectCornerAllCorners;
- styleModel.cornerRadius = 0.0;
- }
-
- cell.styleModel = styleModel;
-
-
- cell.titleLab.text = model.title;
-
- if(model.isChoose){
- [cell.iconImg setImage:[UIImage imageNamed:@"icon_language_selected"]];
- }
- else{
- [cell.iconImg setImage:[UIImage imageNamed:@"icon_language_unselected"]];
- }
-
- return cell;
- }
- - (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath{
- [tableView deselectRowAtIndexPath:indexPath animated:YES];
-
- MOLanguaeModel *selectModel = self.dataArr[indexPath.row];
-
- for (MOLanguaeModel *model in self.dataArr) {
- if([model.title isEqualToString:selectModel.title]){
- model.isChoose = YES;
- }
- else{
- model.isChoose = NO;
- }
- }
-
- [self.tableView reloadData];
-
- }
- - (CGFloat)tableView:(UITableView *)tableView heightForHeaderInSection:(NSInteger)section{
-
- return 7.0;
- }
- - (CGFloat)tableView:(UITableView *)tableView heightForFooterInSection:(NSInteger)section{
-
- return 0.01;
- }
- - (UIView *)tableView:(UITableView *)tableView viewForHeaderInSection:(NSInteger)section{
- UIView *view = [[UIView alloc] init];
- view.backgroundColor = [UIColor clearColor];
- return view;
- }
- - (UIView *)tableView:(UITableView *)tableView viewForFooterInSection:(NSInteger)section{
- UIView *view = [[UIView alloc] init];
- view.backgroundColor = [UIColor clearColor];
- return view;
- }
- - (NSMutableArray *)dataArr{
- if(!_dataArr){
- _dataArr = [NSMutableArray array];
- }
-
- return _dataArr;
- }
- @end
|