2014-11-12 4 views
0

Мое приложение создает несколько UITextViews во время загрузки внутри метода viewDidLoad, так как мне нужно, чтобы они были созданы во время запуска приложения для возможности прокрутки между представлениями и их смены с помощью прокрученный вид. Я попытался создать UIButton и назначить ему функциональность изменения размера шрифта текста внутри UITextView. Однако, поскольку он программно создан в методе viewDidLoad, я не могу получить доступ к ним, ничего не происходит. Я попытался создать UITextViews, используя раскадровку, но не получил нужный результат, поэтому я не могу изменить свои методы создания. Кроме того, не логично вспоминать метод viewDidLoad, когда я нажимаю кнопку, так как в нем множество методов, определенных в нем, и это приведет к утечке мощности центрального процессора, чтобы вызвать его каждый раз, когда мне нужно изменить размер шрифта. Вот как я создать UITextViews:
Изменение размера шрифта UITextView, созданного программно в ViewDidLoad

- (void)viewDidLoad { 


    CGSize imageSize; 
    imageSize.height = 693; 
    imageSize.width = 512; 
    self.scroll1.minimumZoomScale = 1.0; 
    self.scroll1.maximumZoomScale = 1.0; 
    self.scroll1.frame = CGRectMake(0,0,imageSize.width,imageSize.height); 
    self.scroll1.scrollEnabled = YES; 
    self.scroll1.contentSize = CGSizeMake(imageSize.width * imgs.count, imageSize.height); 
    self.scroll1.pagingEnabled = YES; 
    self.scroll1.bounces = false; 
    self.scroll1.delegate = self; 
    leftTextFieldsArray=[NSMutableArray array]; 
    rightTextFieldsArray=[NSMutableArray array]; 
    int counter = 0 ; 
    for (int i = 0; i <= pants - 2; i ++) 
    { 

     CGFloat x = counter * 1024; 
     subView = [[UIScrollView alloc]initWithFrame:CGRectMake(x, 0, 1024, 693)]; 
     subView.clipsToBounds = NO; 

     UIImage *img; 
     UIImage *img2; 


     img = [imgs objectAtIndex:i]; 
     img2 = [imgs objectAtIndex:i+1]; 


     imageView = [[UIImageView alloc ] initWithImage:img]; 
     imageView.frame = CGRectMake(i * 512, 0, 512, 693); 
     imageView2 = [[UIImageView alloc ] initWithImage:img2]; 
     imageView2.frame = CGRectMake((i+1) * 512, 0, 512, 693); 

///////////// ///////////// ///////////// TextViews Created///////////// ///////////// 
     rightTextView = [[UITextView alloc]init]; 
     leftTextView = [[UITextView alloc]init]; 

     rightTextView.scrollEnabled = YES; 
     leftTextView.scrollEnabled = YES; 
     rightTextView.editable = NO; 
      leftTextView.editable = NO; 
//////////////////////////////Specific Behavior regarding positioning in each view////////// 

     if(i == 4) { 
      leftTextView.frame = CGRectMake(2048, 0, 500,300); 
     } 
     else if(i == 6){ 
      leftTextView.frame = CGRectMake(3072, 450, 500,300); 
      rightTextView.frame = CGRectMake(3584, 0, 500,200); 
      rightTextView.layer.zPosition = 2; 
     } 
     else if(i==8){ 
      leftTextView.frame = CGRectMake(4096, 0, 500,300); 
      rightTextView.frame = CGRectMake(4608, 450, 500,300); 
     rightTextView.layer.zPosition = 2; 
     } 
     else if(i==10){ 
      leftTextView.frame = CGRectMake(5120, 0, 500,300); 
      rightTextView.frame = CGRectMake(5632, 0, 500,300); 
      rightTextView.layer.zPosition = 2; 
     } 
     else if(i==12){ 
      leftTextView.frame = CGRectMake(6144, 0, 500,300); 
      rightTextView.frame = CGRectMake(6656, 450, 500,300); 
      rightTextView.layer.zPosition = 2; 
     } 
     else if(i==14) { 
      leftTextView.frame = CGRectMake(7168, 450, 500,300); 
      rightTextView.frame = CGRectMake(7680, 0, 500,300); 
      rightTextView.layer.zPosition = 2; 

     } 

     else if(i==16) { 
      leftTextView.frame = CGRectMake(8192, 0, 500,300); 
      rightTextView.frame = CGRectMake(8674, 0, 500,300); 
      rightTextView.layer.zPosition = 2; 
     } 
     else if(i==18){ 
      leftTextView.frame = CGRectMake(9216, 450, 500,300); 
      rightTextView.frame = CGRectMake(9728, 0, 500,300); 
      rightTextView.layer.zPosition = 2; 

     } 
     else if(i==20){ 
      leftTextView.frame = CGRectMake(10240, 450, 500,300); 
      rightTextView.frame = CGRectMake(10752, 450, 500,300); 
      rightTextView.layer.zPosition = 2; 
     } 
     else if(i==22){ 
      leftTextView.frame = CGRectMake(11264, 0, 500,300); 
      rightTextView.frame = CGRectMake(11776, 0, 500,300); 
      rightTextView.layer.zPosition = 2; 
     } 
     rightTextView.backgroundColor = [UIColor clearColor]; 
     rightTextView.textColor = [UIColor blackColor]; 

     rightTextView.text = rightArray[i/2]; 

     [rightTextFieldsArray addObject:rightTextView]; 

      leftTextView.backgroundColor = [UIColor clearColor]; 
      leftTextView.textColor = [UIColor blackColor]; 

      leftTextView.text = leftArray[i/2]; 

      [leftTextFieldsArray addObject:leftTextView]; 


     subView.scrollEnabled = NO; 

     subView.userInteractionEnabled = NO; 


     [subView addSubview:imageView]; 

     [imageView2 removeFromSuperview]; 

     [subView addSubview:leftTextView]; 

     [self.scroll1 addSubview:rightTextView]; 
     [self.scroll1 addSubview:subView]; 



    } 



    counter ++; 
    [super viewDidLoad]; 
    } 

И я попробовал этот метод в моем Баттона:

- (IBAction)increaseFontFun:(id)sender { 
    [leftTextView setFont:[UIFont boldSystemFontOfSize:24.0f]]; 
} 

Так что ничего не произошло никакого результата. Как я могу достичь своей цели? Большое спасибо

+0

В методе кнопок вы проверили, что leftTextView не равен нулю? Поместите 'NSLog (@"% @ ", leftTextView);' в методе и посмотрите, какой результат вы получите – Flexicoder

+0

@Flexicoder Спасибо за ур ответ, я попробовал, и вот что я получаю: ; layer = ; contentOffset: {0, 0}; contentSize: {0, 30}> –

ответ

2

Из кода, который вы предоставили, в increaseFontFun:leftTextView будет иметь ссылку на последнюю UItextView, который был создан в viewDidLoad метод.

Я не уверен, если я правильно понимаю, но если вы хотите, чтобы все UITextViews' размер шрифта для изменения вы должны цикл через leftTextFieldsArray и установить шрифт для каждого из них, или использовать метод NSArray в makeObjectsPerformSelector:withObject:

Вот пример

for(UITextView * textView in leftTextFieldsArray){ 
    textView.font = [UIFont boldSystemFontOfSize:12]; 
} 
+0

Спасибо за ваш ответ, да, мне нужны все текстовые элементы для изменения шрифта .. i попробуем ваше предложение сейчас –

+0

Можете ли вы предоставить более подробную информацию по этому вопросу? я был бы очень признателен за это. –

+0

Не мог бы поблагодарить вас, это сработало, как шарм! я отредактировал ошибку синтаксиса, пожалуйста, примите его, поэтому для будущей справки было бы понятно спасибо –

0

Вы можете это сделать это очень просто:

UITextField *field = [[UITextField alloc] init]; 
field.font = [UIFont fontWithName:@"ArialMT" size:50.0f]; 
+0

Благодарим вас за ответ, пожалуйста, перечитайте мой вопрос, потому что ваш ответ не распространяется на мою ситуацию. –

0

Ваш код ....

leftTextView = [[UITextView alloc]init]; 

    rightTextView.scrollEnabled = YES; 
    leftTextView.scrollEnabled = YES; 
    rightTextView.editable = NO; 
     leftTextView.editable = NO; 

    if(i == 4) { 
     leftTextView.frame = CGRectMake(2048, 0, 500,300); 
    } 
    else if(i == 6){ 
     leftTextView.frame = CGRectMake(3072, 450, 500,300); 
     rightTextView.frame = CGRectMake(3584, 0, 500,200); 
     rightTextView.layer.zPosition = 2; 
    } 

    ...... 

От NSLog вы положили на место рамку для TextView 0 , 0,0,0 и, следовательно, не видно. Вам нужно добавить инициализацию, которая охватывает тот факт, что i не может быть одним из значений, которые вы ожидаете

Смежные вопросы