2016-03-11 22 views
5

Pracuję nad dynamiczną aplikacją, w której otrzymuję osobne wartości (x, y, szerokość, wysokość) od usługi internetowej dla każdego z obiektów interfejsu użytkownika wewnątrz widoku.Jak przekonwertować ramkę na podstawie rozmiaru ekranu urządzenia?

Na serwerze ustawiają ramki na podstawie następującego rozmiaru (1080 x 1920), powiedzmy, jeśli dostanę CGRect z następującymi wartościami: (200, 20, 100, 100), to powinien być odpowiedni do urządzenia na podstawie rozmiaru urządzenia i określonego rozmiaru serwera.

  1. więc w przypadku iPhone 5 - nowa ramka będzie taki sam, 200, 20, 100, 100.

  2. więc w przypadku iPhone 6 (375 x 667) - nowa rama będzie ?

  3. Tak więc w przypadku iPhone'a 6+ (414 x 736) - nowa klatka będzie?

Najważniejsze jest to, że bez względu na ramy będą odbierane w aplikacji dla konkretnego obiektu UI, powinno być dokładnie tak, jak wygląda w panelu administratora specjalnie na marginesie.

Na notatce,

mam ustawienie UI z autoLayout tylko w serii ujęć.

Wszelkie sugestie?

Ten przykład:

Przykład 1:

| _________________ | 
| |     | | 
| |     | | 
| |     | | 
| |     | | 
| |_________________| | 
|      | 

Przykład 2:

|   _________ | 
|   |   | | 
|   |   | | 
|   |   | | 
|   |   | | 
|   |_________| | 
|      | 

Według powyższych przykładów, ja próby wyjaśnienia, że ​​w ogóle będzie ramka pochodzące z serwera, jeśli wygląda to tak jak powyżej na serwerze, podobne będzie na urządzeniu, ale powinno być oparte na urządzeniu CGRect.

+0

Czy masz ustaloną szerokość i wysokość, 100 x 100? – Vasanth

+0

Decyzja zostanie podjęta przez administratora serwera. Planujemy udostępnić ekran (podgląd ekranu iPhone 5), w którym administrator może dostosować i zmienić rozmiar dowolnych obiektów. – Hemang

+0

Jest oczywiste, że wszystkie rzeczy związane z wielkością obiektu ekranu są następujące: - http://stackoverflow.com/questions/25892207/how-to-specify-size-for-iphone-6-customised-edge-to-edge-image –

Odpowiedz

1

Można korzystać z tych dwóch metod, aby uzyskać serwer i urządzenia specyficzny CGRect.

- (CGFloat) convertServerXorWidthValueToDeviceValueXorWidth:(CGFloat)sValue { 
    CGFloat currentWidth = [UIScreen mainScreen].bounds.size.width; 
    CGFloat value = ceilf((currentWidth * sValue)/1080); 
    return value; 
} 

- (CGFloat) convertServerYorHeightValueToDeviceValueYorHeight:(CGFloat)sValue { 
    CGFloat currentHeight = [UIScreen mainScreen].bounds.size.height; 
    CGFloat value = ceilf((currentHeight * sValue)/1920); 
    return value; 
} 

Mam nadzieję, że to ci pomoże.

0

Powiedziałbym, że ramka dla iPhone'a 6 to (234, 23, 117, 117), a iPhone 6 Plus to (258, 25, 129, 129).

Jak wyliczyłem? New width = (szerokość stary * nowa szerokość urządzenia)/old szerokość urządzenie

(100 * 375)/320 = 117

samo dla innych wartości

Jeśli wykorzystujących układy auto trzeba aktualizować ograniczenia po otrzymaniu nowych wartości.

2

Podstawa zmiany rozmiaru ramki na ekranie i proporcjach iPhone 4s, 5,6,6 +.

Tu trzeba zmienić rozmiar ramki przez ekran tak tutaj masz „ramek na podstawie następujących wymiarach (1080 x 1920)” to oznacza, że ​​masz iPhone 6+ ramkę teraz zobaczyć, że poniżej załączonego obrazu ustawioną bazę na aspekcie stosunek.
1). Rama iPhone 5 (200, 120, 100,100)
2). Rama iPhone 6 (200,20,155,155)
3). iPhone 6+ ramka (200,20,194,194)

enter image description here
Racja ekranu z rozdzielczością ekranu. I dostać się z This Website. Screen ratio

imgur .com/7zi1q.png

+0

Dzięki za odpowiedź mitul, jak to zrobić w kodzie? Jestem po prostu bardzo ciekawostką, aby wprowadzić ten rozwój do mojej aplikacji. – Hemang

+0

Tutaj wystarczy pobrać to demo i spróbować zrozumieć. To demo bazuje na wysokości i na podstawie współczynnika proporcji.:https://www.sendspace.com/file/09e7yo –

+0

Działa poprawnie: - https: // www.sendspace.com/file/09e7yo –

Powiązane problemy