我想在IOS(objective-c)上重现像WPF中的声明性编程。
在WPF中我可以使用这样的控件:
<MediaElement Name="myVideo" Source="C:\WINDOWS\system32\oobe\images\ intro.wmv" Width="450" Height="400" >
确切的代码是:
MediaElement me = new MediaElement();
me.Id = "myVideo";
me.Height=450;
...
这可以在Objective-C(IOS 7)上以类似的方式完成吗?请举例说明如何实现这一点。
是否有任何库可以实现我可以在IOS7中使用的复合模式?
编辑:这是一个真实的问题,如果可以的话,我想在一个真实的项目中实现它。
编辑2:我想将NSString转换为xib文件并在视图中将其显示为控件?
*编辑3:
我有JSON
格式的服务器响应,如下所示:
{
"alignment" : "center",
"text" : "Just a text",
"type" : "label",
"textColor" : "black",
"width" : "300",
"height" : "44",
"backgroundColor" : "white",
"fontName" : "Helvetica",
"fontSize" : "15",
"x" : "75",
"y" : "200"
}
在实现文件中解释为:
UILabel * label = [[UILabel alloc] initWithFrame:CGRectMake(75, 200, 300, 44)];
label.backgroundColor = [UIColor whiteColor];
label.font = [UIFont fontWithName:@"Helvetica" size:15];
label.text = @"Just a text";
label.textAlignment = NSTextAlignmentCenter;
label.textColor = [UIColor blackColor];
[self.view addSubview:label];
答案 0 :(得分:2)
根据你问题的标题,似乎你正在寻找一种方法来“取出一个字符串并从中制作一个物体”。
有可能。我想你已经知道如何解析字符串了。
如果您拥有该类的名称,则始终可以创建对象。
id newObject = [[NSClassFromString(@"classname") alloc] init];
Key将是要设置的属性的名称。
如果课程为KVC compliant,您可以设置其属性,就像设置指定条目一样。
[newObject setValue:@"John Doe" forKey:@"name"];
其中@“John Doe”和@“name”将成为原始字符串的一部分 - 通过解析提取。
为Q Edit2添加:
如果您正在考虑制作自己的运行时xib文件,这些文件可以随时创建并用作正确的 xib文件,那么您就不走运了。 “编译应用程序包中的应用程序”的xib文件已编译(ibtool)。
您可以创建自己的“对象工厂”,它接受并解析文本文件,并将其用作创建对象运行时的蓝图。如果结果应该是某种UIView
,您甚至可以使用XML或JSON格式来定义视图间关系。
请注意,您无法使用在链接过程中遗漏的类。因此,您必须使用此“对象工厂”创建您打算能够创建的所有类的in-code虚拟实例。
编辑,但这听起来也像您的应用可能被拒绝,因为您的应用可能会以某种方式“下载新代码”。
从App Store审核指南:
2.7以任何方式或形式下载代码的应用将被拒绝