UIPicker, измеряющий в альбомном режиме

Вот подход, использующий mutate_all. Если вы хотите сделать это только для определенных столбцов, вы просто должны использовать mutate_at и указать вместо них столбцы.

library(dplyr)
library(stringr)

mutate_all(have, funs(chi = as.numeric(str_detect(., "chi")),
                  bay = as.numeric(str_detect(., "bay")),
                  gia = as.numeric(str_detect(., "gia")),
                  sin = as.numeric(str_detect(., "sin"))))

mutate_at пример с vars:

want <- have %>% mutate_at(vars(rep1,rep2,rep3), funs( 
                           tox = as.numeric(str_detect(., "chi")), 
                           bay = as.numeric(str_detect(., "bay")), 
                           gia = as.numeric(str_detect(., "gia")), 
                           iso = as.numeric(str_detect(., "sin"))))
9
задан Ether 18 October 2009 в 04:34
поделиться

7 ответов

Вы не можете. Размер UIPickerView является постоянным.

ОБНОВЛЕНИЕ: оказывается, что можно изменить размер UIPickerView. Прием должен поместить его в другом (меньшем) UIView и изменить размер того представления. Я еще не попробовал это.

ОБНОВЛЕНИЕ 2: Этот метод не изменяет размер UIPickerView, а скорее обрезок это. Это могло бы или не могло бы быть тем, что Вы ищете, но AFAIK, нет никакого способа действительно изменить размер UIPickerView, и это настолько близко, как это добирается. Это не выглядит настолько плохим.

ОБНОВИТЕ 3 (Запоздалый): С SDK 3.0 UIPickerView является использованием абсолютно изменяемого размера initWithFrame или setFrame.

4
ответ дан 4 December 2019 в 11:44
поделиться

Я вполне уверен, что UIPicker существует одного размера, который Вы не можете изменить. Был бы интересно слышать отличающийся.

0
ответ дан 4 December 2019 в 11:44
поделиться

Вы можете изменить размер, открыв файл .xib в TextEdit и изменив размер UIPickerView.

4
ответ дан 4 December 2019 в 11:44
поделиться

На самом деле, я меняю размер своих сборщиков почти для каждого приложения. Не нравится, что они занимают весь экран. Вот метод, который я использую: (обратите внимание, что я также поворачиваю средство выбора, чтобы оно было горизонтальным)

в viewDidLoad .....

picker = [[UIPickerView alloc] initWithFrame:CGRectZero];
picker.delegate = self;
picker.dataSource = self;
picker.showsSelectionIndicator = NO;


//Resize the picker, rotate it so that it is horizontal and set its position
CGAffineTransform rotate = CGAffineTransformMakeRotation(-1.57);  
rotate = CGAffineTransformScale(rotate, .46, 2.25);
CGAffineTransform t0 = CGAffineTransformMakeTranslation(3, 22.5);
picker.transform = CGAffineTransformConcat(rotate,t0);
[self.view addSubview:picker];
[picker release];

Затем мне нравится добавлять фоновое изображение для моего представления, которое закрывает серые полосы (которые теперь находятся сверху и снизу) метода делегата UIPicker:

//Create the overlay to superimpose ontop of the picker
//In this case, the image is the size of the screen with a transparent area the size of the //UIPickerView cut out in the middle

UIImageView *uiiv = [[UIImageView alloc] 
                     initWithImage:[UIImage                                 imageNamed:@"problem_bg.png"]];
uiiv.userInteractionEnabled = NO;
uiiv.opaque = YES; //for performance
[self.view addSubview:uiiv];
[uiiv release];

UIPickerView:

-(UIView *) pickerView:(UIPickerView *)pickerView viewForRow:(NSInteger)rowforComponent:(NSInteger)component reusingView:(UIView *)view
 {

    UIView *viewForRow = [[[UIView alloc] initWithFrame:CGRectMake(0, 0, 100, 280)] autorelease];
    UIImageView *img = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"myimage.png"]];

    img.frame = CGRectMake(0, 0, 102,280);
    img.opaque = YES;
    [viewForRow addSubview:img];
    [img release];
    UILabel *label;

    UIFont *font = [ UIFont fontWithName:@"Helvetica"  size:20];

    label = [[[UILabel alloc] initWithFrame:CGRectMake(10, 20, 270, 100)] autorelease];

    label.text = @"I am a label";
    label.textAlignment = UITextAlignmentCenter;
    label.textColor = [UIColor blackColor];
    label.font = font;
    label.backgroundColor = [UIColor clearColor];
    label.opaque = NO;
        [viewForRow addSubview:label];

    CGAffineTransform rotate = CGAffineTransformMakeRotation(1.57);  
        [viewForRow setTransform:rotate]; 
    return viewForRow;

}

Это дает гораздо меньшее горизонтальное средство выбора с приятным внешним видом. Надеюсь, это кому-то поможет.

9
ответ дан 4 December 2019 в 11:44
поделиться

Нет проблем (я только что зарегистрировался). Кстати, я только что понял, что при размещении ответа, что метод (UIView *) pickerView:(UIPickerView *)pickerView viewForRow:(NSInteger)row forComponent ..... потерял пространство между строкой и forComponent. Поэтому убедитесь, что делегат правильный, иначе он не сработает.

0
ответ дан 4 December 2019 в 11:44
поделиться

Ответ находится в:

-(UIView *) pickerView:(UIPickerView *)pickerView viewForRow:(NSInteger)row forComponent:(NSInteger)component reusingView:(UIView *)view {

Так как с:

- (NSString*)pickerView:(UIPickerView*)pv titleForRow:(NSInteger)row forComponent:(NSInteger)component

Заставляет его работать (то есть: сбоку с масштабируемой меткой) конечно

.
0
ответ дан 4 December 2019 в 11:44
поделиться

Я боролся с той же проблемой изменения размера окна выбора. После некоторого исследования и головной боли вот что вы можете легко сделать:

  1. Забудьте о построителе интерфейсов! Я думаю, вы можете улучшить пользовательский интерфейс без построитель интерфейса.
  2. В ваших контроллерах перезапишите метод просмотра загрузки.

     - (недействительно) loadView
    {
     // создаем ваше представление
    self.view = [[UIView alloc] initWithFrame: CGRectZero];
     // создаем PickerView с размером по умолчанию
    pickerView = [[UIPickerView alloc] initWithFrame: CGRectZero];
    pickerView.delegate = self;
    pickerView.dataSource = self;
    pickerView.showsSelectionIndicator = ДА;
    
     // Получаем его фрейм
    CGRect pickerFrame = pickerView.frame;
    
     // Установите как хотите, я использую высоту экрана по умолчанию, умноженную на коэффициент сжатия, например 0,75 для 3/4 от исходного размера
    pickerFrame.size.width = screenWidth * pickerShrinkFactor;
    pickerFrame.size.height = pickerHeight * pickerShrinkFactor;
     // Вы также можете установить верхний левый угол средства выбора
    pickerFrame.origin.x = 0;
     // Устанавливаем рамку выбора на новый размер и начало
    pickerView.frame = pickerFrame;
     // Добавляем в ваше представление
     [self.view addSubview: pickerView];
    
    }
    

Удачи

1
ответ дан 4 December 2019 в 11:44
поделиться
Другие вопросы по тегам:

Похожие вопросы: