iOS自适应手机语言的国家&国旗列表

项目需要一个选择国家的列表,想想要自己列出所有国家就够麻烦了,还要适配手机语言就更加是个不可能的任务,后来发现苹果是给出了直接的API来做的,很方便,我加上了大部分国家的国旗,这个是系统没给的,放出来方便大家。

iOS自适应手机语言的国家&国旗列表_第1张图片
image.png

实现

列表怎么实现就不说了,直接说怎么获取国家数组。

    NSLocale *locale = [NSLocale currentLocale];
    NSArray *countryArray = [NSLocale ISOCountryCodes];
    for (NSString *countryCode in countryArray) {
        if ([countryCode isEqualToString:@"CN"]) {
            [self.countryCodeArray insertObject:countryCode atIndex:0];
            NSString *displayNameString = [locale displayNameForKey:NSLocaleCountryCode value:countryCode];
            [self.countryArray insertObject:displayNameString atIndex:0];
            continue;
        }
        [self.countryCodeArray addObject:countryCode];
        NSString *displayNameString = [locale displayNameForKey:NSLocaleCountryCode value:countryCode];
        [self.countryArray addObject:displayNameString];
        
    }

如上面代码,可以直接获取到各个国家的代码,这里会涉及到一个很有意思的地方,如果直接查看 self.countryCodeArray 这个数组,会发现都只是国家代号,但如果去获取他的值,会发现自动变成当前设备语言下的国家名了。

上面代码中 self.countryCodeArray 这个数组是用来存放国家名的,self.countryCodeArray 这个数组是存放国家代码本身的,这是因为我的国旗图片名都是国家代码,所以需要用这个代码来获取图片从而在列表中显示图片。

代码中遇到代号为“CN”的表示是中国,我将它放在列表第一个显示方便选择。

其余的关于列表的代码就很常见啦,不会的可以在工程中查看。

希望能帮助到需要的人,这个知识点知道了就很方便,不知道就很麻烦。


示例工程:https://github.com/Cloudox/OXCountryTable
查看作者首页

你可能感兴趣的:(iOS自适应手机语言的国家&国旗列表)