use objc2::__framework_prelude::*;
use objc2_foundation::*;
use crate::*;
pub type UITransitionContextViewControllerKey = NSString;
pub type UITransitionContextViewKey = NSString;
extern_protocol!(
pub unsafe trait UIViewControllerTransitionCoordinatorContext:
NSObjectProtocol + IsMainThreadOnly
{
#[method(isAnimated)]
unsafe fn isAnimated(&self) -> bool;
#[cfg(feature = "UIViewController")]
#[method(presentationStyle)]
unsafe fn presentationStyle(&self) -> UIModalPresentationStyle;
#[method(initiallyInteractive)]
unsafe fn initiallyInteractive(&self) -> bool;
#[method(isInterruptible)]
unsafe fn isInterruptible(&self) -> bool;
#[method(isInteractive)]
unsafe fn isInteractive(&self) -> bool;
#[method(isCancelled)]
unsafe fn isCancelled(&self) -> bool;
#[method(transitionDuration)]
unsafe fn transitionDuration(&self) -> NSTimeInterval;
#[method(percentComplete)]
unsafe fn percentComplete(&self) -> CGFloat;
#[method(completionVelocity)]
unsafe fn completionVelocity(&self) -> CGFloat;
#[cfg(feature = "UIView")]
#[method(completionCurve)]
unsafe fn completionCurve(&self) -> UIViewAnimationCurve;
#[cfg(all(feature = "UIResponder", feature = "UIViewController"))]
#[method_id(@__retain_semantics Other viewControllerForKey:)]
unsafe fn viewControllerForKey(
&self,
key: &UITransitionContextViewControllerKey,
) -> Option<Retained<UIViewController>>;
#[cfg(all(feature = "UIResponder", feature = "UIView"))]
#[method_id(@__retain_semantics Other viewForKey:)]
unsafe fn viewForKey(&self, key: &UITransitionContextViewKey) -> Option<Retained<UIView>>;
#[cfg(all(feature = "UIResponder", feature = "UIView"))]
#[method_id(@__retain_semantics Other containerView)]
unsafe fn containerView(&self) -> Retained<UIView>;
#[method(targetTransform)]
unsafe fn targetTransform(&self) -> CGAffineTransform;
}
unsafe impl ProtocolType for dyn UIViewControllerTransitionCoordinatorContext {}
);
extern_protocol!(
pub unsafe trait UIViewControllerTransitionCoordinator:
UIViewControllerTransitionCoordinatorContext + IsMainThreadOnly
{
#[cfg(feature = "block2")]
#[method(animateAlongsideTransition:completion:)]
unsafe fn animateAlongsideTransition_completion(
&self,
animation: Option<
&block2::Block<
dyn Fn(
NonNull<ProtocolObject<dyn UIViewControllerTransitionCoordinatorContext>>,
),
>,
>,
completion: Option<
&block2::Block<
dyn Fn(
NonNull<ProtocolObject<dyn UIViewControllerTransitionCoordinatorContext>>,
),
>,
>,
) -> bool;
#[cfg(all(feature = "UIResponder", feature = "UIView", feature = "block2"))]
#[method(animateAlongsideTransitionInView:animation:completion:)]
unsafe fn animateAlongsideTransitionInView_animation_completion(
&self,
view: Option<&UIView>,
animation: Option<
&block2::Block<
dyn Fn(
NonNull<ProtocolObject<dyn UIViewControllerTransitionCoordinatorContext>>,
),
>,
>,
completion: Option<
&block2::Block<
dyn Fn(
NonNull<ProtocolObject<dyn UIViewControllerTransitionCoordinatorContext>>,
),
>,
>,
) -> bool;
#[cfg(feature = "block2")]
#[deprecated]
#[method(notifyWhenInteractionEndsUsingBlock:)]
unsafe fn notifyWhenInteractionEndsUsingBlock(
&self,
handler: &block2::Block<
dyn Fn(NonNull<ProtocolObject<dyn UIViewControllerTransitionCoordinatorContext>>),
>,
);
#[cfg(feature = "block2")]
#[method(notifyWhenInteractionChangesUsingBlock:)]
unsafe fn notifyWhenInteractionChangesUsingBlock(
&self,
handler: &block2::Block<
dyn Fn(NonNull<ProtocolObject<dyn UIViewControllerTransitionCoordinatorContext>>),
>,
);
}
unsafe impl ProtocolType for dyn UIViewControllerTransitionCoordinator {}
);
extern_methods!(
#[cfg(all(feature = "UIResponder", feature = "UIViewController"))]
unsafe impl UIViewController {
#[method_id(@__retain_semantics Other transitionCoordinator)]
pub unsafe fn transitionCoordinator(
&self,
) -> Option<Retained<ProtocolObject<dyn UIViewControllerTransitionCoordinator>>>;
}
);