[英]Copy UI element in Objective-C
我正在嘗試自定義iPhone的UIImagePickerController。 我可以修改默認按鈕(接受和取消)以及添加更多按鈕。 但是,當嘗試使自定義按鈕的外觀和默認iPhone的外觀相似時,我遇到了麻煩。 起初,我認為可以通過以下代碼獲得然后克隆默認按鈕作為我的模板
UIButton *cancelButton = [[[[[[[[[[[[[[[[self.view subviews] objectAtIndex:0]
subviews] objectAtIndex:0]
subviews] objectAtIndex:0]
subviews] objectAtIndex:0]
subviews] objectAtIndex:2]
subviews] objectAtIndex:0]
subviews] objectAtIndex:1]
subviews] objectAtIndex:1];
UIButton *anotherButton = [cancelButton copy];
但是由於我最近才知道NSObject及其子類在默認情況下不實現NSCopying協議,因此它不起作用。
我想知道有什么方法可以-復制UI元素,然后按我的意願對其進行修改-創建具有Apple外觀的自定義按鈕
如果要復制任何UIView,請將其放在nib文件中,並根據需要加載多次。
另一種選擇是存檔現有視圖,然后取消存檔。 請參閱NSKeyedArchiver類。
id theButton; //whatever way you obtain this...
id copyOfTheButton = [NSKeyedUnarchiver unarchiveObjectWithData:
[NSKeyedArchiver archivedDataWithRootObject: theButton]];
有沒有簡單的方法來復制一個Objective-C的對象沒有實現
(除非你使用使用NSCoding的NSResponder類的建議,在這種情況下有。)有NSCopying
NSCopyObject()
但是這也許是所有最危險的功能基礎知識(請參閱NSCopyObject()被認為對我對此瘋狂功能的想法有害 )。
您的選擇是安全或危險的。 安全的方法是只在自己的代碼中復制元素的外觀。 這是乏味的,但是通常是可以實現的。 危險的方法是對元素的類和接口進行反向工程,然后嘗試創建自己的實例(使用alloc / init)。 這可能會起作用,但可能不會起作用,並且可能會在操作系統版本之間中斷,但可能會更快地為您帶來更好的結果。 就個人而言,我傾向於盡可能地手動重建原始元素。 通常,Photoshop是該工作的重要部分。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.