HCountryPicker 1.2.5

HCountryPicker 1.2.5

测试已测试
语言语言 Obj-CObjective C
许可证 zlib
发布最后发布2016年8月

nguyen vu huy 维护。



  • Nick Lockwood

用途

CountryPicker 是 UIPickerView 的一个子类,提供了一种 iOS 控件,允许用户从列表中选择国家。它可以选择在每个国家名称旁边显示国旗,并且该库包含一组来自 https://github.com/koppi/iso-country-flags-svg-collection 的 249 个公有领域国旗图片,已重命名为与库一起使用。

请注意,国家列表基于 ISO 3166 国家代码标准 (http://en.wikipedia.org/wiki/ISO_3166-1)。该列表排除了某些较小国家,将它们视为更大国家的一部分。例如,英格兰、苏格兰、威尔士和北爱尔兰被合并为英国。对于大多数用途来说,这是完全可以接受的,因为它符合常用地区约定,但如果需要指定额外的国家,可以继承并修改“继承”下述的 countries 列表。

支持的 iOS & SDK 版本

  • 支持构建目标 - iOS 8.1 (Xcode 6.1, Apple LLVM 编译器 6.0)
  • 最早支持部署目标 - iOS 6.0
  • 最早兼容部署目标 - iOS 4.3

注意:“支持”意味着库与该版本进行了测试。“兼容”意味着库应该可以在该 iOS 版本上运行(即它不依赖于任何不可用的 SDK 特性),但不再测试兼容性,并且可能需要微调或错误修复才能正确运行。

ARC 兼容性

从版本 1.1 开始,CountryPicker 需要 ARC。如果您希望在非 ARC 项目中使用 CountryPicker,只需将 -fobjc-arc 编译器标志添加到 CountryPicker.m 文件中。为此,进入目标设置中的“构建阶段”标签,打开“编译源文件”组,在列表中双击 CountryPicker.m,在弹出窗口中输入 -fobjc-arc。

如果您希望将整个项目转换为 ARC,则在 CountryPicker.m 中取消注释 #error 行,然后在 Xcode 中运行“编辑”>“重构”>“转换为 Objective-C ARC...”工具,并确保所有要使用 ARC 的文件(包括 CountryPicker.m)都被选中。

安装

要在应用中使用CountryPicker,只需将CountryPicker类文件拖入您的项目。如果您想使用旗帜图标,还要将CountryPicker.bundle文件夹一起拖入。

CountryPicker类方法

CountryPicker类包含一些方便的方法来检索国家名称和代码,并在两者之间进行转换

+ (NSArray *)countryNames;

返回一个按字母顺序排列的所有国家名称的数组。

+ (NSArray *)countryCodes;

返回一个按国家名称排序的所有国家代码的数组。代码与其对应国家名称在countryNames列表中的索引相匹配,但请注意,这意味着代码本身不是按字母顺序排序的。

+ (NSDictionary *)countryNamesByCode;

返回一个按国家代码键的国家名称字典。

+ (NSDictionary *)countryCodesByName;

返回一个按国家名称键的国家代码字典。

CountryPicker属性

每个CountryPicker视图都有以下属性

@property (nonatomic, assign) id<CountryPickerDelegate> delegate;

委托。这实现了CountryPickerDelegate协议,并在选择国家时被通知。

@property (nonatomic, copy) NSString *selectedCountryName;

当前选定的国家名称。这是一个可读写属性,因此可以用来设置选择器的值。将选择器设置为不在countryNames数组中的国家名称将没有任何效果。

@property (nonatomic, copy) NSString *selectedCountryCode;

当前选定的国家代码。这是一个可读写属性,因此可以用来设置选择器的值。将选择器设置为不在countryCodes数组中的国家代码将没有任何效果。

@property (nonatomic, copy) NSLocale *selectedLocale;

这是一个通过区域设置设置/获取选定国家的一个便捷属性。选择器将自动根据区域设置选择正确的国家。要默认使选择器设置为当前设备的区域设置,您可以说

picker.selectedLocale = [NSLocale currentLocale];

CountryPicker实例方法

- (void)setSelectedCountryCode:(NSString *)countryCode animated:(BOOL)animated;
- (void)setSelectedCountryName:(NSString *)countryName animated:(BOOL)animated;
- (void)setSelectedLocale:(NSLocale *)locale animated:(BOOL)animated;

这些方法允许您通过名称、代码或区域设置设置当前国家。它们与等效属性设置器的工作方式完全相同,但有一个可选的动画参数,可以使选择器平滑滚动到选定国家。

CountryPickerDelegate协议

CountryPickerDelegate协议有一个单一强制性方法

- (void)countryPicker:(CountryPicker *)picker didSelectCountryWithName:(NSString *)name code:(NSString *)code;

每次在选择器中选择国家时都会调用此方法。

子类化

自版本1.0.2起,可以轻松地子类化CountryPicker来修改国家名称/代码列表。

要添加更多国家,覆盖+countryNamesByCode方法(无需覆盖+countryCodesByName,因为它是自动从+countryNamesByCode派生的)。

要更改显示顺序或显示(例如)美国或英国的重复副本在列表顶部,覆盖+countryNames方法(无需覆盖+countryCodes,因为它是从+countryNames和+countryCodesByName自动派生的)。

发行说明

版本1.2.3

  • 将旗帜图像移动到资源包中

版本1.2.2

  • 为当前Locale不返回国家名称的模拟器错误添加了解决方案

版本1.2.1

  • 针对iOS 8进行了更新
  • 现在符合-Weverything警告级别

版本1.2

  • 移除Countries.plist - 国家列表现在自动生成
  • 国家名称现在是本地化的
  • 添加了通过区域设置设置和获取国家的能力
  • 移除了setWithLocale:方法

版本1.1

  • 针对iOS 7进行了更新
  • 为iOS 7添加了新的“扁平化”标志图像
  • 现在需要ARC(详情见README)
  • 现在符合-Wall和-Wextra警告级别

版本1.0.2

  • 日本字首大写
  • 增加了南苏丹
  • 重构以简化子类化

版本1.0.1

  • 添加了ARC支持
  • 添加了示例项目

版本1.0

  • 首次发布