ios – 强制视图上的特定大小类

ios – 强制视图上的特定大小类,第1张

概述我认为iPad和iPad之间需要不同的约束. iPhone版. 登录屏幕在iPhone和iPhone上以全屏显示.在iPad的页面表格中.由于尺寸的原因,UITextFields距离iPhone的右侧和左侧40像素,但我希望它们在iPad上为80像素.我将其设置为最终值大小类(w Regular,h Regular)的特定约束. 但是,因为此视图显示在页面表上,所以它不使用最终值大小类.理想情况下 我认为iPad和iPad之间需要不同的约束. iPhone版.

登录屏幕在iPhone和iPhone上以全屏显示.在iPad的页面表格中.由于尺寸的原因,UITextFIElds距离iPhone的右侧和左侧40像素,但我希望它们在iPad上为80像素.我将其设置为最终值大小类(w Regular,h Regular)的特定约束.

但是,因为此视图显示在页面表上,所以它不使用最终值大小类.理想情况下,我想“强制”视图使用大小类,而不是拥有一组iPhone / iPad约束和许多约束Outlets.

解决方法 这意味着要完成的方法是使用 UIViewController上的特征集合,通过调用-setoverrIDeTraitCollection:forChildVIEwController:.

但是,正如API标题所示,UIVIEwController只能通过其父级覆盖其traitCollection.呈现的视图控制器不是其父级的子级(头文件特别注释显示的视图控制器不包含在子视图控制器中),因此您必须添加“topresentVIEwController”.

在这个例子中,在IB中有topresentVIEwController场景,它只是一个容器VIEwController连接到它的边,约束为0,以及将被嵌入的视图控制器.

@implementation topresentVIEwController-(voID)traitCollectionDIDChange:(uitraitcollection *)prevIoUsTraitCollection {    [super traitCollectionDIDChange:prevIoUsTraitCollection];    if(thisDevice.userInterfaceIdiom != UIUserInterfaceIdiomPad)    {        return;    }    for (UIVIEwController *controller in self.childVIEwControllers) { //Should be only one        uitraitcollection *regularWIDthTraits = [uitraitcollection traitCollectionWithHorizontalSizeClass:UIUserInterfaceSizeClassRegular];        [self setoverrIDeTraitCollection:regularWIDthTraits forChildVIEwController:controller];    }}

这将在iPad上将大小类锁定为常规.

编辑:WWDC sample code here建议表明只需要提供被覆盖的特征,这是有道理的,因为在旧的新合并集合的原始答案中,不清楚它是如何知道使用的.

总结

以上是内存溢出为你收集整理的ios – 强制视图上的特定大小类全部内容,希望文章能够帮你解决ios – 强制视图上的特定大小类所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/web/1012721.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-22
下一篇 2022-05-22

发表评论

登录后才能评论

评论列表(0条)

保存