2013-05-08 89 views
1

我知道iPhone 5的尺寸是640 * 960和iPhone 4和以前的iPhone尺寸是320 * 480。現在,我很困惑。如果我想讓我的應用程序在這些不同的iPhone上工作,如何計算圖像視圖或按鈕的幀。例如在viewDidLoad中,我有一個圖像,它的大小爲630 * 100,名稱爲[email protected],另一個大小爲315 * 50,名稱爲someImage.png。圖像是相同的,但大小是不同的。然後我創建了一個帶有CGRectMake(5,5,315,50)幀的UIImageView,它的尺寸爲320 * 480。如果(iphone5)然後用CGRectMake(10,10,630,100)的框架爲UIImageView設置另一個框架,我需要做些什麼?我必須爲這兩種尺寸準備兩個不同的UIImageView框架嗎?上的點CGRectMake爲iPhone 5和iPhone 4

+4

不,但這已被問了很多很多次。 CoreGraphics使用點,而不是像素。 – 2013-05-08 10:19:16

+0

那麼我如何設置點,當我只有像素的大小? – 2013-05-08 10:59:16

+0

你不會對尺寸有任何顧忌,CG會自動爲你解決問題。但是這已經被很多次的回答了。 – 2013-05-08 11:06:56

回答

5

iOS上使用點,而不是所有的像素座標和大小。正常iPhone屏幕上的1點(320x480)等於1像素。 Retina iPhone屏幕上的1點(640x960)等於2像素。

因此CGRectMake(5, 5, 315, 50)自動轉換爲視網膜屏幕上的x = 10,y = 10,寬度= 630,高度= 100。

+0

所以,我只是CGRect爲320 * 480大小的矩形,它會自動轉換爲648 * 960大小的正確值? – 2013-05-08 10:57:22

+0

是的,就是這樣。 – 2013-05-08 11:00:21

+0

謝謝。這就是我從一開始就在做的事情,但我很困惑。我認爲最好問問你們,所以我可以繼續這樣做。 – 2013-05-08 11:15:10

1

的CGRect工作不是像素所以在iPhone4和iPhone5的

沒有寬度diffrence如果你使用[[UIScreen mainScreen]applicationFrame].size.width你得到320寬度的兩個設備。

0

爲什麼不使用img.size

就像這樣:

UIImage *img = [UIImage imageNamed:@"yourImage"]; 
CGRect * rect = CGRectMake(5, 5, img.size.width,img.size.height); 
-3
Uiscrolview *myScrolView= [[Uiscrolview alloc] initWithFrame:CGRectMake(self.view.frame.origin.x+50,self.view.frame.origin.x+50, self.view.frame.size.width-100, self.view.frame.size.height-300); 
+4

請解釋這是什麼。 – 2013-10-11 17:15:45

+0

我永遠無法讓我的Uiscrolviews正常工作。 – atonyc 2014-06-25 20:25:09