[英]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.