iOS 10相机视图显示API_Cancel_Title而不是取消

Gou*_*shi 6 camera ios ios10 xcode8

我正在使用iOS 10和使用相机拍照的应用程序.当相机视图打开时,而不是取消按钮,标题为"API_CANCEL_TITLE".当我捕捉到整个标题看到的图片时,我想要的不是这个长标题,而是看起来"取消".我使用过应用本地化.我搜索了几个链接但找不到解决方案.

这是屏幕截图:

在此输入图像描述

这只发生在iOS 10中,在iOS 9中它将正常工作在这里是代码:

- (IBAction)takePicturePressed:(UIButton *)sender
{

    UIImagePickerController *picker = [[UIImagePickerController alloc] init];
    picker.delegate = self;
    picker.allowsEditing = YES;
    picker.sourceType = UIImagePickerControllerSourceTypeCamera;
    [self presentViewController:picker animated:YES completion:nil];
}
Run Code Online (Sandbox Code Playgroud)

请建议......

shc*_*shc 15

我使用BundleLocalization接近了同样的问题, 并且我已经跟踪UIImagePickerController了它,它是从一个包中获取的.

事实证明,它使用了4个"表"(在NSBundle命名法中):

  • CameraUI (用于相机)
  • PhotoLibraryServices (适用于PhotoLibrary)
  • PhotoLibrary (适用于PhotoLibrary)
  • PhotosUI (适用于PhotoLibrary)

就我而言,我必须做的就是本地化UIImagePickerController界面,它在项目中创建了几个.strings文件并对它们进行了本地化.

下面提到的文件的内容与我见过的键(标准英语值),他们是非常自我解释

CameraUI.strings
"PHOTO" = "PHOTO";
"AEAF_LOCK_TEXT" = "AE/AF LOCK";
"API_CANCEL_TITLE" = "Cancel";
"HDR_AUTO" = "Auto";
"HDR_ON" = "On";
"HDR_OFF" = "Off";
"TIMER_OFF_TEXT" = "Off";
"USE_PHOTO" = "Use Photo";
Run Code Online (Sandbox Code Playgroud) PhotoLibraryServices.strings
"PHOTOS" = "Photos";
"CAMERA_ROLL" = "Camera roll";
"ALL_SCREENSHOTS" = "Screenshots";
Run Code Online (Sandbox Code Playgroud) PhotoLibrary.strings
"CANCEL" = "Cancel";
"RETAKE" = "Retake";
"STREAM_SHARED_BY_ME_SUBTITLE" = "From You";
"STREAM_SHARED_BY_SUBTITLE" = "From %@";
"ALBUM_IMAGE_COUNT_FORMAT" = "%@ Photos";
"ALBUM_VIDEO_COUNT_FORMAT" = "%@ Videos";
"1_ALBUM_PHOTO" = "1 Photo";
"1_ALBUM_VIDEO" = "1 Video";
"ALBUM_TWO_TYPES_LABEL_COMMAS" = "%@, %@";
Run Code Online (Sandbox Code Playgroud) PhotosUI.strings
"ALL_PHOTOS_IN_LIBRARY" = "Moments";
"PXUserCollectionsSectionTitle" = "My Albums";
"FULL_PHOTOS_GRID_ZOOM_LEVEL_TITLE" = "Moments";
"NO_PHOTOS_OR_VIDEOS" = "No Photos or Videos";
"EMPTY_ALBUM_LIST_MESSAGE_iPhone" = "You can take photos and videos using camera, or sync photos and videos onto your iPhone using iTunes";
Run Code Online (Sandbox Code Playgroud)


小智 5

在此捆绑包扩展上,您需要检查 tableName 中的 CameraUI。\n使用该方法将“Api_Cancel_title”键的值更改为“Cancel”\n使用您自己的本地化值,其中您曾经声明过自己的值

\n\n

例如

\n\n

英语 "API_CANCEL_TITLE" = "取消";

\n\n

印地语 "API_CANCEL_TITLE" = "\xe0\xa4\xb0\xe0\xa4\xa6\xe0\xa5\x8d\xe0\xa4\xa6 \xe0\xa4\x95\xe0\xa4\xb0\xe0\xa4\xa8\xe0 \xa4\xbe";

\n\n

法语 "API_CANCEL_TITLE" = "Annuler";

\n\n
// MARK: - Bundle Extension\n\nextension Bundle {\n\n    @objc func specialLocalizedStringForKey(_ key: String, value: String?, table tableName: String?) -> String {\n        let currentLanguage = CSLanguage.currentAppleLanguage()\n        var bundle = Bundle.main\n        if let path = Bundle.main.path(forResource: currentLanguage, ofType: "lproj") {\n            bundle = Bundle.init(path: path)!\n        } else {\n            let basePath = Bundle.main.path(forResource: "Base", ofType: "lproj")\n            bundle = Bundle.init(path: basePath!)!\n        }\n        if let name = tableName, name == "CameraUI"{\n         let values = NSLocalizedString(key, comment: name)\n\n         return values\n        }\n        if let name = tableName, name == "PhotoLibrary"{\n         let values = NSLocalizedString(key, comment: name)\n\n         return values\n        }\n        if let name = tableName, name == "PhotoLibraryServices"{\n         let values = NSLocalizedString(key, comment: name)\n\n         return values\n        }\n        if let name = tableName, name == "PhotosUI"\n        {\n         let values = NSLocalizedString(key, comment: name)\n\n         return values\n        }\n        return bundle.specialLocalizedStringForKey(key, value: value, table: tableName)\n    }\n}\n
Run Code Online (Sandbox Code Playgroud)\n