2014-11-12 3 views
0

Я создал UIPickerView в коде только тогда, когда кажется, что iOS 8 вид элемента позиционируется вверху. Как мне это сделать? Это код используется:UIPicker & iOS 8

   show actionsheet 
       pickerActionSheet = [self actionSheetSimulationWithPickerView:picker withToolbar:pickerViewToolbar]; 

       // set frames on different orientation 
       if (UIDeviceOrientationIsLandscape([UIApplication sharedApplication].statusBarOrientation)) { 
        picker.frame = CGRectMake(0, 32, SCREEN_HEIGHT, 162); 
        pickerViewToolbar.frame = CGRectMake(0, 0, SCREEN_HEIGHT, 32); 
        [pickerActionSheet setBounds:CGRectMake(0, 0, SCREEN_HEIGHT, 366)]; 
       } 
       else{ 
        picker.frame = CGRectMake(0, 44, SCREEN_WIDTH, 216); 
        pickerViewToolbar.frame = CGRectMake(0, 0, SCREEN_WIDTH, 44); 
        [pickerActionSheet setBounds:CGRectMake(0, 0, SCREEN_WIDTH, 496)]; 
       } 

ответ

0
if (UIDeviceOrientationIsLandscape([UIApplication sharedApplication].statusBarOrientation)) { 
    [pickerActionSheet setBounds:CGRectMake(0, SCREEN_WIDTH-194, SCREEN_HEIGHT, 194)]; 
    pickerViewToolbar.frame = CGRectMake(0, 0, SCREEN_HEIGHT, 32); 
    picker.frame = CGRectMake(0, 32, SCREEN_HEIGHT, 162); 

} else { 
    [pickerActionSheet setBounds:CGRectMake(0, SCREEN_HEIGHT-216, SCREEN_WIDTH, 260)]; 
    pickerViewToolbar.frame = CGRectMake(0, 0, SCREEN_WIDTH, 44); 
    picker.frame = CGRectMake(0, 44, SCREEN_WIDTH, 216); 
} 

// CGRectMake(start point x, start point y, width, height) 

После запуска iPhone 5 (выше экран), когда вам нужно что-то начинать с самого низа, что вам нужно сделать SCREEN_HEIGHT-objectHeight. Если вы хотите, чтобы он начинался с вершины, вы начинаете с 0.

Теперь iPhone 6 и 6+ (более широкий экран) здесь, вы должны сделать с левой и с правой стороны, оставив вас в начале с 0 и вы начнете с SCREEN_WIDTH-objectWidth.

Итак, теперь мы не будем использовать ширину всего 320. Если вы хотите получить всю ширину экрана, мы все должны использовать SCREEN_WIDTH.

+0

Благодаря она работает. Вместо панели инструментов? Кажется, это не работает. – Vincenzo

+0

Если 'pickerActionSheet' является' UIView' для панели инструментов и листа, я думаю, что приведенное выше будет правильным. Если это не так, просто измените размеры. – emotality

0

Я изменил код, как показано ниже, и теперь все отображается правильно внизу (на iPhone 4 и 5). Но на iPhone и 6 Plus показано намного ниже, и я не могу поколебать сборщика. Как так?

   // set frames on different orientation 
       if (UIDeviceOrientationIsLandscape([UIApplication sharedApplication].statusBarOrientation)) { 
        picker.frame = CGRectMake(0, SCREEN_WIDTH-162, SCREEN_HEIGHT, 162); 
        pickerViewToolbar.frame = CGRectMake(0, 0, SCREEN_HEIGHT, 32); 
        [pickerActionSheet setBounds:CGRectMake(0, 0, SCREEN_HEIGHT, 366)]; 
       } 
       else{ 
        picker.frame = CGRectMake(0, SCREEN_HEIGHT-216, SCREEN_WIDTH, 216); 
        pickerViewToolbar.frame = CGRectMake(0, SCREEN_HEIGHT-260, SCREEN_WIDTH, 44); 
        [pickerActionSheet setBounds:CGRectMake(0, 0, SCREEN_WIDTH, 496)]; 
       } 
+0

Должен работать. Как вы определили SCREEN_HEIGHT? – emotality

0

Фиксированный с

    if(UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPhone) { 
         CGSize result = [[UIScreen mainScreen] bounds].size; 
         if(result.height == 667) { 
          [pickerActionSheet setBounds:CGRectMake(0, 0, SCREEN_WIDTH, 667)]; 
         } 
         if(result.height == 736) { 
          [pickerActionSheet setBounds:CGRectMake(0, 0, SCREEN_WIDTH, 736)]; 
         } 
         if(result.height < 667) { 
          [pickerActionSheet setBounds:CGRectMake(0, 0, SCREEN_WIDTH, 496)]; 
         } 
        } 
Смежные вопросы