将NSString转换为Objective-C控件

时间:2014-01-08 11:36:56

标签: ios objective-c user-controls declarative-programming

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

1 个答案:

答案 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以任何方式或形式下载代码的应用将被拒绝