我正在开发一个使用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];
}请建议..。
发布于 2017-02-02 17:37:45
我已经使用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";PhotoLibraryServices.strings
"PHOTOS" = "Photos";
"CAMERA_ROLL" = "Camera roll";
"ALL_SCREENSHOTS" = "Screenshots";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" = "%@, %@";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";发布于 2019-01-21 11:52:16
在Bundle的这个扩展中,您需要检查CameraUI中的tableName。使用该方法将"Api_Cancel_title“键的值更改为”取消“,使用您自己的本地化值,在这里您可以声明自己的值。
例如
英文"API_CANCEL_TITLE“=”取消“;
印度语"API_CANCEL_TITLE“=”रद्दकरना“;
法语"API_CANCEL_TITLE“= "Annuler";
// MARK: - Bundle Extension
extension Bundle {
@objc func specialLocalizedStringForKey(_ key: String, value: String?, table tableName: String?) -> String {
let currentLanguage = CSLanguage.currentAppleLanguage()
var bundle = Bundle.main
if let path = Bundle.main.path(forResource: currentLanguage, ofType: "lproj") {
bundle = Bundle.init(path: path)!
} else {
let basePath = Bundle.main.path(forResource: "Base", ofType: "lproj")
bundle = Bundle.init(path: basePath!)!
}
if let name = tableName, name == "CameraUI"{
let values = NSLocalizedString(key, comment: name)
return values
}
if let name = tableName, name == "PhotoLibrary"{
let values = NSLocalizedString(key, comment: name)
return values
}
if let name = tableName, name == "PhotoLibraryServices"{
let values = NSLocalizedString(key, comment: name)
return values
}
if let name = tableName, name == "PhotosUI"
{
let values = NSLocalizedString(key, comment: name)
return values
}
return bundle.specialLocalizedStringForKey(key, value: value, table: tableName)
}
}发布于 2017-01-07 05:17:58
我有一个方法,我知道这不是一个完美的解决方案,但是在得到一个完美的解决方案之前,我们可以使用以下方法:
使用自定义摄像机视图。如果设备版本为10或大于10,则使用条件管理它,然后执行自定义摄像机视图设置,否则使用默认摄像机视图。
通过使用自定义视图,API_Cancel_Title按钮隐藏了功能,其余功能运行良好。下面是我用来引用的链接:从自定义摄像机中移除“取消”按钮
https://stackoverflow.com/questions/40859312
复制相似问题