একাধিক পরীক্ষার পরে এখানে আমি কী চাই তা কাজ করতে পেলাম। এটিই আমি চেষ্টা করছিলাম। - আমার সাথে একটি চিত্র আছে। এবং আমি ইমেজটি পুরো স্ক্রিনে যেতে চাই। - আমার কাছে একটি ট্যাববার সহ একটি নেভিগেশন কন্ট্রোলারও রয়েছে। সুতরাং আমি এটি লুকানো প্রয়োজন। - এছাড়াও, আমার মূল প্রয়োজনটি কেবল লুকানো ছিল না, দেখানোর সময় এবং লুকানোর সময় একটি বিবর্ণ প্রভাবও ছিল।
এইভাবে আমি এটি কাজ করেছিলাম।
পদক্ষেপ 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 - নীচের এই সমস্ত পদক্ষেপগুলি চিত্রভিউ নিয়ন্ত্রণকারীতে রয়েছে in
পদক্ষেপ 2.1 - ভিউডিডলয়েডে, নাভিবারটি দেখান
- (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
, ইমেজটিতে সিঙ্গেলট্যাপ অঙ্গভঙ্গি যুক্ত করুন এবং নাভবারটি অর্ধপুঞ্জক করুন।
- (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];
}