首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

iOS13 UIViewController isModalInPresentation在ObjectiveC中没有设置器,因此无法设置?

iOS13 UIViewController的isModalInPresentation属性在Objective-C中没有setter方法,因此无法直接设置。

isModalInPresentation是UIViewController的一个布尔属性,用于指示是否以modal方式展示视图控制器,并控制当用户尝试通过滑动手势或者其他交互方式关闭模态视图时的行为。当isModalInPresentation为true时,滑动手势或其他交互手段将无法关闭模态视图。

在Objective-C中,由于isModalInPresentation属性没有setter方法,因此无法直接设置。但是可以通过以下方式间接设置该属性:

  1. 使用KVC(Key-Value Coding)间接设置属性:
代码语言:txt
复制
[viewController setValue:@(YES) forKey:@"modalInPresentation"];
  1. 使用Runtime的关联对象(Associated Objects)进行间接设置:
代码语言:txt
复制
#import <objc/runtime.h>

static const char modalInPresentationKey;

objc_setAssociatedObject(viewController, &modalInPresentationKey, @(YES), OBJC_ASSOCIATION_RETAIN_NONATOMIC);

以上是在Objective-C中间接设置isModalInPresentation属性的方法,其中viewController是你需要设置的视图控制器。

推荐的腾讯云相关产品:腾讯云移动应用分析(MTA),链接地址:https://cloud.tencent.com/product/mta

腾讯云移动应用分析(Mobile App Analysis,MTA)是腾讯云提供的一款面向移动应用开发者的业务统计分析产品。MTA支持iOS平台,可以帮助开发者深入了解和分析应用的用户行为、性能指标、流量数据等,为开发者提供数据支持,优化应用,提升用户体验。

注意:由于要求不提及亚马逊AWS、Azure、阿里云、华为云、天翼云、GoDaddy、Namecheap、Google等流行的云计算品牌商,因此以上推荐的腾讯云产品仅供参考,实际选择云计算品牌商应根据具体需求和情况进行评估。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

iOS——配适深色模式

适配深色模式 苹果在iOS13为iPhone引入了深色模式。那作为成为iOS程序员的我们也有事情做了,就是适配深色模式。...首先,所有 UIKit 本身所提供的 UI 控件(例如 UIView,UILabel,UITextView等等) ,只要没有针对颜色等内容特殊设置过,都会自动适配深色模式,这部分是我们开发者不需要去关心的...颜色 iOS13以后,UIKit给我们提供了很多的动态颜色,以system开头的都是动态颜色,当我们给 UI 控件设置了动态颜色以后。 UI 控件就会自动的根据当前是否是黑暗模式展现出来对应的颜色。...因此实际开发,我们可以创建我们自定义的动态颜色。... iOS 13 , UIKit 为 UIColor 所提供的 新 API 来创建我们自己的动态颜色。

1.6K10
  • iOS 小技能:Method Swizzling (交换方法的IMP)

    ,一个类是用一个名为objc_class的结构体表示的,它的定义如下 https://developer.apple.com/documentation/objectivec/objective-c_runtime...Selector 是一个在运行时被注册(或映射)的C类型字符串,由编译产生并且类被加载进内存时由runtime自动进行名字和实现的映射。...Objective-C调用一个方法,其实是向一个对象发送消息,查找消息的唯一依据是selector的名字。因此我们可以在运行时偷换selector对应的方法实现,达到给方法挂钩的目的。...这样才能保证子类方法拿到父类的被swizzle的实现。因此+(void)loadswizzle不会出错,就是因为load类方法会默认从父类开始调用。...2.4 适配iOS13的模态的的样式问题 h /** 模态只处理13以上的 */ @interface UIViewController (ERPPresent13) /** Whether or

    1.7K10

    iOS接入开屏广告教程 : 以腾讯优量汇为案例

    开屏V+广告是一个5s-30s的视频广告,5s开屏呈现的过程,用户点击右上角的“进入首页”或5s曝光结束后,视频均将收缩到APP内右下角的小视窗继续播放。...idfa的适配请看本文的第三章节 GPS信息获取开关 已获得GPS权限的前提下,媒体可以选择是否广告获取用户的GPS信息,以便获取定向广告。...的实现文件初始化并加载广告数据,开屏广告目前支持全屏开屏和半屏开屏广告两种形式,其中半屏开屏广告支持开发者自定义设置开屏底部的界面,用以展示应用Logo等。...获取IDFA等广告标识符权限向您提供更优质、安全的个性化服务及内容;开启后,您也可以前往系统“设置-隐私 ”随时关闭。...在这里插入图片描述 IV iOS13适配present半屏的问题 由于本文的广告类型是开屏全屏方式的,所以使用分类将广告控制GDTSplashImageViewController的modalPresentationStyle

    2.8K20

    Objc Runtime 总结

    const char * sel_getName ( SEL sel ); // objectivec Runtime系统中注册一个方法,将方法名映射到一个选择,并返回这个选择 SEL sel_registerName...( const char *str ); // objectivec Runtime系统中注册一个方法 SEL sel_getUid ( const char *str ); // 比较两个选择...Method的接收消息对象参数和方法选择参数 Method中使用self关键字来引用实例本身,self的内容即接收消息的对象是Method运行时被传入的同时还有方法选择。...例如可以用@dynamic关键字类的实现文件写个属性 //这个表明会为这个属性动态提供set get方法,就是编译是不会默认生成setPropertyName:和propertyName方法,需要动态提供...注意的是forwardInvocation:方法只有消息接收对象无法正常响应消息时才被调用。

    75620

    iOS 14 egret H5游戏卡顿问题分析和部分解决办法

    由于龙骨设定为24fps,而实际fps有40,从视频肉眼无法看出卡顿。所以这里视频省去。...题外话:自研引擎性能略比egret好10%左右,但上边测试能支持15000个图片,只是因为自研引擎没有做像素密度加倍尺寸渲染。 由此可见,iOS14 webgl性能确实比iOS13有明显下降。...2、推送纹理、webgl初始化设定(抗锯齿等)、frameBuffer 上述方面,egret的设置都属于通用做法,并没有特殊,而且调整了参数后,性能并没有提升。...而且BlendMode是游戏素材制作的必需选项,影响到透明叠加效果,无法简单去除。 上述几个方面都没有找到解决方式。...性能结论 iOS14对比iOS13和以前版本,webgl渲染性能上有明显下降,尤其drawcall次数较大、渲染面积较大或使用较多颜色混合滤镜情况下,下降尤其明显。

    3.5K31

    iOS 自定义转场动画

    //必要调用实现的系统方法 //手势过程,通过updateInteractiveTransition设置转场过程动画进行的百分比,然后系统会根据百分比自动布局动画控件,不用我们控制了 [self...同上 3、push动画之前设置导航控制的转场动画代理,转场时最上层的视图控制需要遵循的协议,并设置为代理,并实现如下代理方法: /.../push动画之前设置转场动画代理 self.navigationController.delegate = animationFour; #pragma mark -- UINavigationControllerDelegate...,根控制没有。...// 判断导航控制是否只有一个子控制,如果只有一个子控制,肯定是根控制 if (self.childViewControllers.count == 1) { // 表示用户根控制界面

    1K90

    iOS 自定义转场动画

    //必要调用实现的系统方法 //手势过程,通过updateInteractiveTransition设置转场过程动画进行的百分比,然后系统会根据百分比自动布局动画控件,不用我们控制了 [self...同上 3、push动画之前设置导航控制的转场动画代理,转场时最上层的视图控制需要遵循的协议,并设置为代理,并实现如下代理方法:...//push动画之前设置转场动画代理 self.navigationController.delegate = animationFour; #pragma mark -- UINavigationControllerDelegate...,根控制没有。...// 判断导航控制是否只有一个子控制,如果只有一个子控制,肯定是根控制 if (self.childViewControllers.count == 1) { // 表示用户根控制界面

    1.3K50

    iOS好用的第三方侧边栏控件——MMDrawerController

    :(UIViewController *)leftDrawerViewController; //只创建带右侧边栏的视图控制 -(id)initWithCenterViewController:(UIViewController...也提供了许多属性和方法供开发者进行自定义的设置,其中可用属性解析如下: //设置左侧边栏的最大宽度 默认280 @property (nonatomic, assign) CGFloat maximumLeftDrawerWidth...MMDrawerSide drawerSide, CGFloat percentVisible))drawerVisualStateBlock; 回调block中会传递进来侧边栏显示完成的百分比,并且侧边栏出现过程...        为了确保MMDrawerController库的轻量级,其作者设计时也做了功能上的取舍权衡,MMDrawerController无法完成以下需求: 1.上边栏与下边栏。...3.无法设置显示一个最小的抽屉宽度。 4.不能支持UITabBarController容器。 5.不能在中心视图控制之上呈现侧边栏视图。 专注技术,热爱生活,交流技术,也做朋友。 ——珲少

    2.8K20

    iOS14开发-UIViewController

    view属性 入门知识里初步介绍了 UIViewController 与其属性view的关系,其实它们之间的关系没有那么简单,需要进一步分析。...顺向传值只需要在目标控制声明需要接收的参数,然后源控制中进行传值即可。 storyboard 方式。 代码方式。...逆向传值 逆向传值即按照 UIViewController 跳转的顺序反向进行传值,比如控制A跳转到控制B,控制B返回控制A时进行传值,这种方式就是逆向传值。...被代理对象(需要传值的 UIViewController) 声明协议,协议定义传值方法,方法的参数个数与类型取决于需要传值的个数和类型。 UIViewController 声明一个代理属性。...接收值的 UIViewController 实现需要传值的 UIViewController 的闭包属性,闭包的实现拿到传过来的值进行使用。

    2.4K20

    iOS之ProtocolBuffer搭建和示例demo

    搭建pb编译到时没有什么问题,只是把*.proto文件编译出来后,我用cocoaPods集成ProtocolBuffers到自己项目, cocoaPods集成的时候,我尝试了两个库,一个是: p.p1...对应版本编译包,比如目前的对应的objc最新版本     下载地址为:https://github.com/google/protobuf/releases/download/v3.1.0/protobuf-objectivec...5、工程设置搜索静态库的头文件(pb文件protocolbuf文件夹里面):    targets —>  Build Setting  —>  Search Paths  —> Header Search...如果Person.proto源文件有语法问题,编译时会报错;当编译时什么提示都没有,表示编译成功:   将编译好的*.pbobjc.h和*.pbobjc.m拖入工程,因为不支持arc, 所以需要在...*.pbobjc.m设置-fno-objc-arc, 然后就可以使用了。

    1.6K30

    【IOS开发基础系列】UIViewController专题

    -(void)animateTransition:(id)transitionContext;         进行切换的时候将调用该方法,我们对于切换时的UIView的设置和动画都在这个方法完成。...        解释一下这个实现:     1.我们首先需要得到参与切换的两个ViewController的信息,使用context的方法拿到它们的参照;     2.对于要呈现的VC,我们希望它从屏幕下方出现,因此将初始位置设置到屏幕下边缘...使用其中方法可以为UIView动画添加关键帧动画)     5.动画结束后我们必须向context报告VC切换完成,是否成功(在这里的动画切换没有失败的可能性,因此直接pass一个YES过去)。...3.手势结束时,把正在切换的标设置回NO,然后进行判断。2我们设定了手势距离超过设定一半就认为应该结束手势,否则就应该返回原来状态。...,弄明白之前会有些confusing),因此这些效果使用起来非常方便,相信一般项目中是足够使用的了。

    57030

    打造完备的iOS组件化方案:如何面向接口进行模块解耦?

    直接引用类时,如果类不存在,编译会给出引用错误,但是动态组件就无法静态时检查了。...> *,编译检查 protocol 的继承链时,由于UndeclaredProtocol没有继承自ZIKViewRoutable,因此Protocol *不是...获取模块时,返回值是一个id类型,使用者需要手动指定返回变量的类型, Swift 更是需要手动类型转换,而这一步是可能出错的,并且编译无法检查。...不过那些跨多端的模块和远程模块无法做到这样的解耦,因为跨多端时没有统一的定义接口的方式,因此只能通过隐式约定或者网络协议定义接口,例如 URL 路由。...,可惜这种方式 Swift 无法使用了。

    7.6K43

    iOS对UIViewController生命周期和属性方法的解析

    因此,如果我们有一些和这个相关的全局变量,可以在这里进行初始化。...,这里面有一点需要我们注意,如果我们需要向controller中视图进行传值设置,通过以下方法得到的Controller,视图还没有被初始化创建出来:  ViewController2 * viewController2...2、使用代码跳转Storyboard的controller         我们除了Storyboard拉拉扯扯可以进行控制的跳转外,我们也可以使用代码来跳转Storyboardsegue连接关系...Storyboard两个控制间建立一个segue联系,我们可以取一个名字: ?...; 2、模态跳转Controller的从属         我们进行控制的跳转时,只要控制没有被释放,我们都可以顺藤摸瓜的找到它,使用如下两个方法: //其所present的contller,比如

    3K20

    iOS 组件化转framework

    RouteDemo JLRoute方式简易组件化调研实例,实例中加载两个组件采用framework方式加载 基础 路由注册 采用Appdelegate添加类目 使用initialize来加载【因此需要注意...】 UIViewController通用加载方式,采用Category方式提供加载了main , static library dynamic library的VC加载 注意类目会根据编译顺序加载而initialize...只会加载一次,因此需要避免在其他库的Appdelegate地方使用initialize,防止路由无法被注册 @interface UIViewController (JLRouteInit) //...Headers设置Public Private Project分别代表需要暴漏出的级别,一目了然不太过多说明 主要是需要考虑public的文件头,给外部调用使用 1 StaticVC.h添加需要暴漏出去头...项目导入 General Framework ,Libraries, and Embedded Content 需要将对应动态库的Content设置为 Embed……

    1.2K10

    iOS横竖屏切换

    2、viewDidLoad调用的旋转方法是什么意思? 横屏竖切换机制分析 前面的实例介绍了如何支持切换,但是也产生一些疑问: 工程配置文件也没有设置横屏,为什么后面就能支持横屏?...仅仅知道切换适配代码,是无法形成横竖屏切换理解,也就很难回答上述的问题。 由于没有找到解释横竖屏切换机制的官方文档,以下根据自己的经验对这个切换的机制进行分析。...App启动前 App启动前进程还未加载,代码无法运行,系统肯定无法通过AppDelegate或者UIViewController这种代码的方式获取横竖屏的配置。...假如只UIWindow返回界面朝向也是允许的,就如同上面的实例分析的push横屏。...假如我们很多个竖屏界面,需要强制横屏某一个界面,如果是子界面可以使用present的方式,如果是push那么就必须要用到这个私有api。

    2.6K20
    领券