首页
学习
活动
专区
工具
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)load中swizzle不会出错,就是因为load类方法会默认从父类开始调用。...2.4 适配iOS13的模态的的样式问题 h /** 模态只处理13以上的 */ @interface UIViewController (ERPPresent13) /** Whether or

    1.8K10

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

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

    2.9K20

    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:方法只有在消息接收对象无法正常响应消息时才被调用。

    77420

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

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

    3.6K31

    iOS 自定义转场动画

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

    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.9K20

    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),因此这些效果使用起来非常方便,相信一般项目中是足够使用的了。

    72630

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

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

    7.8K43

    iOS横竖屏切换

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

    2.7K20

    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对UIViewController生命周期和属性方法的解析

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

    3K20

    Swift:静态工厂方法

    无论是我们要根据APP的品牌设置样式的视图(View),还是要配置的视图控制器(View Controller),亦或是在测试中创建存根的值时,我们经常发现需要将设置代码放在某个地方。...尽管子类化是一项重要的语言功能,即使在面向协议的编程时代,也很容易将自定义设置与自定义行为混淆。我们并没有在上面的UILabel中真正添加任何新行为,我们只是在设置一个实例。...此外,由于扩展名可以限制为单个文件(通过添加private关键字),因此我们可以轻松地为需要创建特定视图的应用程序部分设置扩展名,只有一个功能即可: //我们只会在单个视图控制器中使用它,因此我们将范围设为私有...虽然我们可能无法完全摆脱视图控制器(或与此相关的视图)的子类化,但是某些类型的视图控制器可以从工厂方法中受益。...尤其是在使用子视图控制器时,我们通常最终会得到一组视图控制器,它们只能在其中呈现特定状态,而不是在其中包含大量逻辑。对于那些视图控制器,将其设置移动到静态工厂API可能是一个很好的解决方案。

    2.4K10
    领券