我尝试使用表单,但据我所知,帧和阴影效果无法更改.
vc.modalPresentationStyle = UIModalPresentationFormSheet;[self presentModalVIEwController:cv animated:YES];
我也试过使用一个d出框,要么我不能居中,要么我无法隐藏箭头.
还有另一种显示模态视图控制器的方法吗?是否可以通过使用表单或d出窗口解决此问题?
解决方法 没有正式的方法可以执行此 *** 作,但是您可以通过编写自定义视图来获得所需的行为,该视图使引用或委托与其呈现的视图控制器交互并将其添加到视图层次结构中.要真正获得模态感觉,您还可以在“模态”视图下方的呈现控制器上放置透明覆盖.我在很多应用程序中都做到了这一点,它通常很棒.您可能需要制作自定义叠加视图,以便您可以拦截触摸并更优雅地为其演示设置动画.我透明的叠加层通常是这样的:
@protocol transparentOverlayDelegate <NSObject>@optional- (voID)transparentOverlayWilldismiss:(transparentOverlay *)backgroundtouch;- (voID)transparentOverlayDIDdismiss:(transparentOverlay *)backgroundtouch;@end@interface transparentOverlay : UIVIEw { ID<transparentOverlayDelegate> _delegate; UIVIEw *_contentVIEw; CGfloat _pAlpha;}@property(nonatomic,assign) ID<transparentOverlayDelegate> delegate;@property(nonatomic,retain) UIVIEw *contentVIEw;@property(nonatomic,assign) CGfloat pAlpha;- (voID)presenttransparentOverlayInVIEw:(UIVIEw *)vIEw;- (voID)dismisstransparentOverlay:(BOol)animated;
我的自定义模态视图通常是这样的:
@protocol ModalVIEwDelegate <NSObject>- (voID)performSelectorOnDelegate:(SEL)selector;@end@interface ModalVIEw : UIVIEw { ID<ModalVIEwDelegate> _delegate;}@property(nonatomic,assign) ID<ModalVIEwDelegate> delegate;
在我的呈现视图控制器中,我通常会执行以下 *** 作:
- (voID)presentModalController { transparentOverlay *to = [[[transparentOverlay alloc] initWithFrame:self.vIEw.bounds] autorelease]; to.delegate = self; ModalVIEw *mv = [[ModalVIEw alloc] initWithFrame:CGRectMake(500,500,300,300)]; mv.delegate = self; to.contentVIEw = mv; [mv release]; [to presenttransparentOverlayInVIEw:self.vIEw]; }
使用在这两个类上定义的委托给了我几乎开放的访问权限来 *** 纵我的呈现控制器以及我的演示和解雇.唯一的缺点是当它在带有Navigationbar的视图上使用时,因为呈现控制器视图的边界将不包含Navigationbar的界限而使其保持打开以进行交互,有多种方法可以绕过它而不是它们非常漂亮(添加到导航控制器的视图是一个选项).
总结以上是内存溢出为你收集整理的在iPad中显示带自定义框架的模态视图控制器全部内容,希望文章能够帮你解决在iPad中显示带自定义框架的模态视图控制器所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)