Как я могу динамично изменить размер плагина Палитры цветов jQuery?

После нескольких испытаний я понял, как это работает для того, что я хотел. Это то, что я пытался. - У меня есть вид с изображением. и я хотел, чтобы изображение было полноэкранным. - У меня есть навигационный контроллер с TabBar тоже. Так что мне тоже нужно это скрывать. - Кроме того, моим главным требованием было не просто скрываться, но и иметь эффект затухания при показе и скрытии.

1111 Вот так я и заработал.

Шаг 1 - У меня есть изображение, и пользователь нажимает на это изображение один раз. Я фиксирую этот жест и вставляю его в новый imageViewController, в imageViewController, я хочу получить полноэкранное изображение.

- (void)handleSingleTap:(UIGestureRecognizer *)gestureRecognizer {  
NSLog(@"Single tap");
ImageViewController *imageViewController =
[[ImageViewController alloc] initWithNibName:@"ImageViewController" bundle:nil];

godImageViewController.imgName  = // pass the image.
godImageViewController.hidesBottomBarWhenPushed=YES;// This is important to note. 

[self.navigationController pushViewController:godImageViewController animated:YES];
// If I remove the line below, then I get this error. [CALayer retain]: message sent to deallocated instance . 
// [godImageViewController release];
} 

Шаг 2 - Все эти шаги ниже находятся в ImageViewController

Шаг 2.1 - В ViewDidLoad показать navBar

- (void)viewDidLoad
{
[super viewDidLoad];
// Do any additional setup after loading the view from its nib.
NSLog(@"viewDidLoad");
[[self navigationController] setNavigationBarHidden:NO animated:YES];
}

Шаг 2.2 - В viewDidAppear установить задание таймера с задержкой (у меня установлено время задержки 1 сек). А после задержки добавьте эффект затухания. Я использую альфа, чтобы использовать затухание.

- (void)viewDidAppear:(BOOL)animated
{
NSLog(@"viewDidAppear");

myTimer = [NSTimer scheduledTimerWithTimeInterval:1.0 target:self     selector:@selector(fadeScreen) userInfo:nil repeats:NO];
}

- (void)fadeScreen
{
[UIView beginAnimations:nil context:nil]; // begins animation block
[UIView setAnimationDuration:1.95];        // sets animation duration
self.navigationController.navigationBar.alpha = 0.0;       // Fades the alpha channel of   this view to "0.0" over the animationDuration of "0.75" seconds
[UIView commitAnimations];   // commits the animation block.  This Block is done.
}

шаг 2.3 - В viewWillAppear добавьте жест SingleTap к изображению и сделайте navBar полупрозрачным.

- (void) viewWillAppear:(BOOL)animated
{

NSLog(@"viewWillAppear");


NSString *path = [[NSBundle mainBundle] pathForResource:self.imgName ofType:@"png"];

UIImage *theImage = [UIImage imageWithContentsOfFile:path];

self.imgView.image = theImage;

// add tap gestures 
UITapGestureRecognizer *singleTap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(handleTap:)];  
[self.imgView addGestureRecognizer:singleTap];  
[singleTap release];  

// to make the image go full screen
self.navigationController.navigationBar.translucent=YES;
}

- (void)handleTap:(UIGestureRecognizer *)gestureRecognizer 
{ 
 NSLog(@"Handle Single tap");
 [self finishedFading];
  // fade again. You can choose to skip this can add a bool, if you want to fade again when user taps again. 
 myTimer = [NSTimer scheduledTimerWithTimeInterval:5.0 target:self  selector:@selector(fadeScreen) userInfo:nil repeats:NO];
 }

Шаг 3 - Наконец, в viewWillDisappear, убедитесь, что все вещи обратно

- (void)viewWillDisappear: (BOOL)animated 
{ 
self.hidesBottomBarWhenPushed = NO; 
self.navigationController.navigationBar.translucent=NO;

if (self.navigationController.topViewController != self)
{
    [self.navigationController setNavigationBarHidden:NO animated:animated];
}

[super viewWillDisappear:animated];
}
31
задан James Skidmore 29 June 2009 в 21:32
поделиться

8 ответов

В Colorbox 1.3 теперь вы можете вызвать функцию изменения размера:

$('.item').colorbox.resize();
29
ответ дан 27 November 2019 в 21:28
поделиться

Ну, я раньше не использовал Colorbox, но я использовал похожие вещи, и, если я правильно понимаю, вам нужно изменить стиль окна после того, как что-то было загружено.

Если вы обнаружите, какие значения идентификатора / класса применяются к Colorbox, вы можете сделать так, чтобы при загрузке содержимого AJAX вызывалась функция для изменения стиля соответствующей части Colorbox.

0
ответ дан 27 November 2019 в 21:28
поделиться

Вы можете вызвать его в функции обратного вызова, которую он предоставляет:

$(".single").colorbox({}, function(){
     alert('Howdy, this is an example callback.');
});
0
ответ дан 27 November 2019 в 21:28
поделиться

resize фактически принимает объект jQuery и использует его для изменения размера. Вместо этого вы можете просто перезагрузить colorbox следующим образом:

$(window).resize(function(){
    $.fn.colorbox.load();
}); 
3
ответ дан 27 November 2019 в 21:28
поделиться

Когда вы вызываете цветовую панель, просто добавьте функцию onComplete в это, например,

$('.mycolorboxes').colorbox({    
  onComplete : function() { 
       $(this).colorbox.resize(); 
  }    
});

Поэтому каждый раз, когда контент загружается в палитру цветов, он запускает свою функцию изменения размера.

20
ответ дан 27 November 2019 в 21:28
поделиться

Ответ Криса помог мне на полпути, но он вызвал серьезную ошибку в IE7 / 8, поскольку он будет вызывать эту функцию каждый раз при изменении размера окна и даже, как ни странно, на некоторых кнопках asp.net, вызывающих обратную передачу?!?! даже если нет активного палитры.

Кажется, это решает эту проблему:

    $(window).resize(function(){
               if ($('#colorbox').length) {
     if( $('#colorbox').is(':hidden') ) {                    
          }
         else {
           $.fn.colorbox.load();
         }
       }
    });

Он проверяет, существует ли #colorbox, используя .length, а затем проверяет, что он не скрыт, что делает трюк, как я мог видеть в Firebug, когда вы закрываете colorbox, он не полностью удалено / уничтожено, просто скрыто!

Надеюсь, это поможет ..

0
ответ дан 27 November 2019 в 21:28
поделиться

Как я знаю, colorbox с iframe: true, не может быть изменен по размеру. Color с iframe: false может изменять только высоту (используя jQuery.fn.colorbox.resize()).

2
ответ дан 27 November 2019 в 21:28
поделиться

Это можно сделать, если вы можете определить высоту/ширину содержимого в iframe, затем вы можете использовать функцию colorbox.resize() для изменения размера colorbox.

0
ответ дан 27 November 2019 в 21:28
поделиться
Другие вопросы по тегам:

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