আপডেট ০৪/২০১6: সকল ভোটের জন্য প্রত্যেককে আপনাকে ধন্যবাদ জানাতে জাস্ট এই আপডেট করতে চেয়েছিলেন। দয়া করে নোট করুন যে এটি যখন মূলত ফিরে লেখা হয়েছিল তখন ... আর সি এর আগে, সীমাবদ্ধতার আগে, আগে ... প্রচুর স্টাফ! সুতরাং এই কৌশলগুলি ব্যবহার করবেন কিনা তা সিদ্ধান্ত নেওয়ার সময় দয়া করে এটিকে ધ્યાનમાં রাখুন। আরও আধুনিক পদ্ধতির হতে পারে। ওহ, এবং যদি আপনি একটি খুঁজে। দয়া করে একটি প্রতিক্রিয়া যুক্ত করুন যাতে প্রত্যেকে দেখতে পায়। ধন্যবাদ।
একটু পরে ...
অনেক গবেষণার পরে আমি দুটি কার্যনির্বাহী সমাধান নিয়ে এসেছি। এই উভয়ই ট্যাবগুলির মধ্যে অ্যানিমেশন কাজ করেছে এবং করেছে।
সমাধান 1: দর্শন থেকে রূপান্তর (সহজ)
এটি সবচেয়ে সহজ এবং একটি পূর্বনির্ধারিত ইউআইভিউভিউ রূপান্তর পদ্ধতি ব্যবহার করে। এই সমাধানের সাথে আমাদের মতামতগুলি পরিচালনা করার দরকার নেই কারণ পদ্ধতিটি আমাদের পক্ষে কাজ করে।
// Get views. controllerIndex is passed in as the controller we want to go to.
UIView * fromView = tabBarController.selectedViewController.view;
UIView * toView = [[tabBarController.viewControllers objectAtIndex:controllerIndex] view];
// Transition using a page curl.
[UIView transitionFromView:fromView
toView:toView
duration:0.5
options:(controllerIndex > tabBarController.selectedIndex ? UIViewAnimationOptionTransitionCurlUp : UIViewAnimationOptionTransitionCurlDown)
completion:^(BOOL finished) {
if (finished) {
tabBarController.selectedIndex = controllerIndex;
}
}];
সমাধান 2: স্ক্রোল (আরও জটিল)
আরও জটিল সমাধান, তবে আপনাকে অ্যানিমেশনের আরও নিয়ন্ত্রণ দেয়। এই উদাহরণে আমরা স্লাইড চালু এবং বন্ধ করার মতামত পাই। এটির সাথে আমাদের নিজেরাই মতামত পরিচালনা করতে হবে।
// Get the views.
UIView * fromView = tabBarController.selectedViewController.view;
UIView * toView = [[tabBarController.viewControllers objectAtIndex:controllerIndex] view];
// Get the size of the view area.
CGRect viewSize = fromView.frame;
BOOL scrollRight = controllerIndex > tabBarController.selectedIndex;
// Add the to view to the tab bar view.
[fromView.superview addSubview:toView];
// Position it off screen.
toView.frame = CGRectMake((scrollRight ? 320 : -320), viewSize.origin.y, 320, viewSize.size.height);
[UIView animateWithDuration:0.3
animations: ^{
// Animate the views on and off the screen. This will appear to slide.
fromView.frame =CGRectMake((scrollRight ? -320 : 320), viewSize.origin.y, 320, viewSize.size.height);
toView.frame =CGRectMake(0, viewSize.origin.y, 320, viewSize.size.height);
}
completion:^(BOOL finished) {
if (finished) {
// Remove the old view from the tabbar view.
[fromView removeFromSuperview];
tabBarController.selectedIndex = controllerIndex;
}
}];
সুইফটে এই সমাধান:
extension TabViewController: UITabBarControllerDelegate {
public func tabBarController(tabBarController: UITabBarController, shouldSelectViewController viewController: UIViewController) -> Bool {
let fromView: UIView = tabBarController.selectedViewController!.view
let toView : UIView = viewController.view
if fromView == toView {
return false
}
UIView.transitionFromView(fromView, toView: toView, duration: 0.3, options: UIViewAnimationOptions.TransitionCrossDissolve) { (finished:Bool) in
}
return true
}
}