2014-03-27 97 views
1

嘿,我的iOS應用程序非常簡單,而不是搞亂Xcode的自動佈局功能,有沒有一種方法可以通過編程來爲每個分辨率設置屏幕大小。我正在使用Xcode的故事板功能,但我似乎無法弄清楚這一點。我GOOGLE了它相當廣泛,我發現唯一的事情是編輯>解決自動佈局問題>重置爲...iOS上的自動縮放

這效果很好,除了它總是擠壓我的圖像。我試圖在他們身上設置一個強制高度,然後一切都變得瘋狂了!

那麼是否有任何技術將視圖中的所有內容縮小10%?

感謝,Krkto

-BTW屏幕是一個UIView

CNC中還當我設置了自動版式爲「重置爲建議的約束上的......」,我稱之爲滾動視圖的動畫它會緩慢地滾動資源,而背景以正常方式上升。

+0

這是什麼屏幕?一個UIView? – Roecrew

+0

感謝Jino,愚蠢的錯誤lol – Krtko

+0

是的它的一個UIView – Krtko

回答

1

以下是我將如何使用AutoLayout進行操作。

  • 設置你的IB /故事板
  • 設置視圖的約束

由於要縮放子視圖 - 設置其高度和寬度的限制。

所以 - 寬度約束: 通過

  • CTRL +拖了UIView內做到這一點從左至右(反之亦然)

停止拖動一個彈出會顯示與兩個選項:選擇寬度。

所以同樣的高度 - 只需按住CTRL +從你想縮放的UIView拖動,從上到下或從下到上,當彈出窗口顯示時,單擊高度。

現在您已經設置了約束條件 - 在左側面板中找到它們,顯示IB/Storyboard的所有UIView對象。他們會在你讓他們在同一UIView的

現在,CTRL +將它們拖動到您的視圖控制器 - 這將創造NSLayoutConstraint`IBOutLets

例:

@property (weak, nonatomic) IBOutlet NSLayoutConstraint *heightConstraint; 

現在 - 當你想要更新高度約束(和寬度) - 在代碼中,做這樣的事情:

self. heightConstraint.constant = 10; // new Size 

[self.view layoutSubviews]; //Causes setNeedsDisplay to be called on all subviews in UIView 

這就是它的全部。你可以把這段代碼放在一個UIView動畫中,它也會很好地動畫。只需使用一些簡單的數學來計算任何你想要的大小。

如果你看看IB/Storyboard - 你會看到Xcode左邊的約束被顯示,它會給你當前的常量值。

例子:

enter image description here

希望這有助於。

1

你缺少的是什麼限制。 raywenderlich on autolayout

本教程提供了我相信您的需求。

+0

謝謝,它的一個漂亮的教程。但我會再來一次。 TBH比我想要的更復雜。我只是希望它能夠從一個分辨率到另一個分辨率。我想我來自遊戲開發背景,對我來說這似乎很標準。 – Krtko

+0

我也是這樣。我總是遠離汽車佈局。我總是以編程方式製作我的東西。這是更多的打字,但我覺得更多的控制方式。 – Roecrew

+0

必須有一個更簡單的方法。是的,我覺得你,但能夠拖放東西是一件了不起的事情。 – Krtko

0

它看起來像@krtko真正想要的是關閉自動佈局,大小類,並將應用程序進入自動縮放模式。對於更簡單的屏幕,這只是處理四種屏幕尺寸比自動佈局更簡單的方法。 「支撐和彈簧」(Autoresizing)功能仍然可以用來定義在屏幕房地產增長或縮小時發生的情況(特別是在iPhone 4/iPhone-on-iPad模式下)。

關鍵是要使用info.plist中的UILaunchImages鍵並指定只有320x480和320x568的圖像。這使應用程序進入一種模式,其中6和6+尺寸自動顯示爲iPhone 5的放大。您失去了高分辨率的好處,但獲得了大量時間,無需使用AutoLayout並在所有分辨率下提供大量圖像文件。非常適合MVP和快速原型。

https://developer.apple.com/library/ios/documentation/General/Reference/InfoPlistKeyReference/Articles/iPhoneOSKeys.html#//apple_ref/doc/uid/TP40009252-SW28

注意,在這種環境下,助理編輯/預覽功能不能正常工作;它顯示瞭如果通過通常的縮放機制渲染視圖的樣子,而不是編譯時使用的自動縮放。模擬器將顯示正確的佈局。

enter image description here