2016-11-22 80 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); 
    } 

正如您所看到的位置是動態計算的。只需在你的視圖控制器中添加一個方法來獲取該位置(例如,作爲枚舉)來計算元素的實際位置。

相關問題