目的:修改系統(tǒng)拍攝完成后出現(xiàn)的 重拍 和 使用照片 文字
在調(diào)試時(shí)我們可以看到如下圖的層級(jí)結(jié)構(gòu).只要拿到它并修改文字就可以了.
假如我們想要把使用照片那幾個(gè)字變更為搜索照片可以按如下方法實(shí)現(xiàn)
1.在這個(gè)界面將要出現(xiàn)或者已經(jīng)出現(xiàn)的代理方法中(圖片選擇控制的代理)找到這個(gè)View
-(void)navigationController:(UINavigationController*)navigationController willShowViewController:(UIViewController*)viewController animated:(BOOL)animated
我們可以遍歷view的找到想要的view
-(UIView *)findView:(UIView *)aView withName:(NSString *)name {
if ([name isEqualToString:NSStringFromClass(aView.class)]){
return aView;
}
for (UIView *view in aView.subviews) {
'if ([name isEqualToString:NSStringFromClass(view.class)]) {
return view;
}
}
return nil;}
然后通過(guò)下面方法找到:PLCropOverlayPreviewBottomBar
UIView *PLCropOverlay = [self findView:viewController.view withName:@"PLCropOverlay"];
[PLCropOverlay setValue:@"搜索照片" forKey:@"_defaultOKButtonTitle"];
UIView *PLCropOverlayBottomBar = [self findView:PLCropOverlay withName:@"PLCropOverlayBottomBar"];
UIView *PLCropOverlayPreviewBottomBar = [self findView:PLCropOverlayBottomBar withName:@"PLCropOverlayPreviewBottomBar"];
UIButton *userButton = PLCropOverlayPreviewBottomBar.subviews.lastObject;
[userButton setTitle:@"搜索照片" forState:UIControlStateNormal];
然而實(shí)踐證明這個(gè)方法在選擇相機(jī)拍照時(shí)無(wú)效的.但是在選擇 圖庫(kù) 時(shí)有效的.其中的 選取 會(huì)變成 搜索照片.
2.如果解決使用相機(jī)時(shí)的問(wèn)題呢
在顯示PLCropOverlay相關(guān)屬性的時(shí)候,發(fā)現(xiàn)其有個(gè)屬性是_defaultOKButtonTitle
PLCropOverlay->_defaultOKButtonTitle 我們可以通過(guò)KVC進(jìn)行賦值
在上一步獲取PLCropOverlay的時(shí)候 通過(guò)KVC進(jìn)行賦值就可以了如下:
[PLCropOverlaysetValue:@"搜索照片"forKey:@"_defaultOKButtonTitle"];
到這一步就搞定了.
備注:
其他在使用圖庫(kù)時(shí)也有_defaultOKButtonTitle
屬性,但是實(shí)踐表明,是無(wú)效果的,因此上文的最終結(jié)果是通過(guò)KVC賦值之后,仍然進(jìn)行了查找子視圖的操作.當(dāng)然你也可以進(jìn)一步優(yōu)化.