1

我想在 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];
4

1 回答 1

2

根据您问题的标题,您似乎正在寻找一种“获取字符串并从中制作对象”的方法。

这是可能的。我猜你已经知道如何解析字符串了。

如果您有类的名称,您始终可以创建对象。

id newObject =  [[NSClassFromString(@"classname") alloc] init];

键是要设置的属性的名称。

如果这个类是KVC 兼容的,你可以像设置字典条目一样设置它的属性。

[newObject setValue:@"John Doe" forKey:@"name"];

其中@"John Doe" 和@"name" 将是原始字符串的一部分 - 通过解析提取。

为 Q Edit2 添加:

如果您正在考虑制作自己的运行时 xib 文件,这些文件可以随时创建并用作正确的xib 文件,那么您就不走运了。编译“应用程序包中的应用程序附带”的 xib 文件(ibtool)。

您可以做的是创建自己的“对象工厂”,它接受并解析文本文件并将其用作创建对象运行时的蓝图。如果结果应该是某种类型,UIView您甚至可以使用 XML 或 JSON 格式来定义视图间关系。

请注意,您不能使用在链接过程中遗漏的类。因此,您必须为您打算使用此“对象工厂”创建的所有类创建代码内虚拟实例。

编辑:但这听起来您的应用程序可能会被拒绝,因为您的应用程序将能够以某种方式“下载新代码”。

来自 App Store 审查指南:

2.7 以任何方式或形式下载代码的应用程序将被拒绝

于 2014-01-08T12:56:50.103 回答