2016-11-22 89 views
-1

我正在尝试构建一个SDK,允许发布商根据其原生UI设计我的广告。如果你看一下例子更具体地讲,我从谷歌原生快递广告了:在iOS中实现“CSS like”视图的最佳方式

enter image description here

我想用一个配置文件可以设置:

  1. 每个组件的位置,对例如所述顶部或底部,使图像的图像的下面或顶部文本,等等,等等

  2. “安装”按钮广告容器的大小

我试着用一个包含所有组件的xib来实现它,然后尝试在运行时根据一些配置文件设置约束条件 - 我得说目前的情况并不理想。

我也看过Facebook的ComponentKit(http://componentkit.org/),但它似乎更适合UITableView,而不是1个通用视图。

您认为应对这一挑战的最佳方式是什么?有没有建议的OOTB解决方案?任何样品项目做了类似的事情?

感谢,

+2

如果你喜欢CSS,为什么不使用CSS(和Web视图)?这实际上是Apple在类似情况下所做的(即iTunes商店界面)。 – matt

+2

我第二@马特的建议。但是,如果您确实想要使用约束,并且您已经知道哪些视图将会出现,则可以以视觉格式的形式序列化所有约束,并将它们交付给应用程序,这将无意识地创建这些约束。说一个带有一串字符串的json响应。 –

+0

@FernandoMazzon这是一个聪明的想法。我从来没有想过视觉格式字符串是一种容易网络传播的编码约束方式。 – matt

回答

-1

您可以通过从UIViewController的继承implementier自己的viewController。然后你可以覆盖方法ViewDidLayoutSubviews。在这个方法中,你可以设置视图上的UI元素的位置。这可以完成相对röntge大小。 Herr是C#中的一些示例代码:

 /// </summary> 
    public override void ViewDidLayoutSubviews() 
    { 
     base.ViewDidLayoutSubviews(); 

     var tempFrame = View.Frame; 

     _settings.Frame = new CGRect(tempFrame.Width * 0.25, tempFrame.Height * 0.25, tempFrame.Width * 0.06, tempFrame.Height * 0.6); 
     _statistics.Frame = new CGRect(tempFrame.Width * 0.75, tempFrame.Height * 0.25, tempFrame.Width * 0.06, tempFrame.Height * 0.6); 
    } 

正如您所看到的位置是动态计算的。只需在你的视图控制器中添加一个方法来获取该位置(例如,作为枚举)来计算元素的实际位置。

相关问题