Xcode 6有一个新功能,可以在故事板中根据当前设备配置的大小类自动设置UILabel,UITextField和UIButton中的字体和字体大小.例如,您可以将UILabel设置为在"任何宽度,紧凑高度"(例如在横向上的iPhone上)配置上使用字体大小12,在"常规宽度,常规高度"配置(例如在iPad上)上使用大小18.更多信息请点击这里:
这在理论上是一个非常好的功能,因为它可以使得不必根据设备配置以编程方式在UI功能上设置不同的字体.现在,我有一些条件代码根据设备类型设置字体,但显然这意味着我必须在整个应用程序的各个地方以编程方式设置字体.所以我最初对此功能感到非常兴奋,但我发现它在实际使用中存在严重问题(可能是一个bug).请注意,我正在构建针对SDK 8并设置iOS 8的最低部署目标,因此这与与旧版iOS的兼容性无关.
问题是:如果我为不同的大小类设置不同的字体大小,并使用iOS提供的"系统"字体,一切都按预期工作,字体大小根据大小类更改.如果我使用我的应用程序提供的自定义字体(是的,我在应用程序包中正确设置,因为它以编程方式工作)并将自定义字体设置为XCode 6故事板中的标签,这也可以按预期工作.但是当我尝试为不同大小的类使用不同大小的自定义字体时,在故事板中,它突然不起作用.配置的唯一区别是我选择的字体(自定义字体与系统字体).相反,所有字体都显示在设备和模拟器上作为默认大小的默认系统字体,无论大小等级(我通过调试器验证它是用系统字体替换故事板中指定的实际字体) .所以基本上,自定义字体的大小类功能似乎已被破坏.另外,有趣的是,自定义字体实际上在视图控制器的XCode 6"预览"窗格中正确显示和调整大小:只有在实际的iOS系统上运行它才停止工作(这让我觉得我正在配置它正确).
我尝试了多种不同的自定义字体,它似乎不适用于任何一种,但如果我使用"系统",它总是有效.
无论如何,还有其他人在Xcode 6中看到过这个问题吗?关于这是否是iOS 8,Xcode中的错误或者我做错了什么的任何想法?我发现,我发现的唯一解决方法是继续以编程方式设置字体,就像我已经为大约3个版本的iOS一样,因为这确实有效.但我希望能够使用此功能,如果我可以使用自定义字体.我们的设计不接受使用System字体.
附加信息:从Xcode 8.0开始,修复了错误.
我基本上希望有我的子视图位置不同,这取决于在iPad(纵向或横向)使用在Xcode 6中引入施胶类的方向,我发现许多教程解释不同的大小类如何可用于iPhone手机在纵向和横向上的IB但是,似乎没有任何内容涵盖IB上的iPad的个人风景或肖像模式.有人可以帮忙吗?
我有四个按钮布局.在肖像中,它们应该一个在另一个之上.在横向上,它们应该是两列,每列有两个按钮.
我在代码中实现了按钮 - 非常简单:
UIButton *btn1 = [[UIButton alloc] init];
[self.view addSubview: btn1];
UIButton *btn2 = [[UIButton alloc] init];
[self.view addSubview: btn2];
UIButton *btn3 = [[UIButton alloc] init];
[self.view addSubview: btn3];
UIButton *btn4 = [[UIButton alloc] init];
[self.view addSubview: btn4];
NSDictionary *views = NSDictionaryOfVariableBindings(btn1, btn2, btn3, btn4);
[btn1 setTranslatesAutoresizingMaskIntoConstraints:NO];
[btn2 setTranslatesAutoresizingMaskIntoConstraints:NO];
[btn3 setTranslatesAutoresizingMaskIntoConstraints:NO];
[btn4 setTranslatesAutoresizingMaskIntoConstraints:NO];
// portrait constraints
[self.view addConstraints:[NSLayoutConstraint constraintsWithVisualFormat:@"H:|-(50)-[btn1]-(50)-|"
options:0 metrics:nil views:views]];
[self.view addConstraints:[NSLayoutConstraint constraintsWithVisualFormat:@"H:|-(50)-[btn2]-(50)-|"
options:0 metrics:nil views:views]];
[self.view addConstraints:[NSLayoutConstraint constraintsWithVisualFormat:@"H:|-(50)-[btn3]-(50)-|"
options:0 metrics:nil views:views]];
[self.view addConstraints:[NSLayoutConstraint constraintsWithVisualFormat:@"H:|-(50)-[btn4]-(50)-|"
options:0 …Run Code Online (Sandbox Code Playgroud) 似乎所有当前的iOS设备都很好地映射到新的iOS 8大小类,除了iPad版本?我似乎无法弄清楚如何使用尺寸类功能为iPad横向绘制不同的场景(与iPad肖像不同)?
这是苹果想象中的设计还是我想念iOS尺寸类?
我正在iOS 8上使用自适应布局,我希望得到大小类的确切内容viewDidLoad.关于那个的任何想法?
我是iOS开发的新手,只是研究适应性和布局我有点困惑,
根据文档
iOS定义了两个大小类:
通过其他参考:
但是对于iPhone 6 Plus,它具有紧凑的高度和横向的规则宽度.
我的困惑是:
在此先感谢!,热烈欢迎编辑!
我知道它在技术上到目前为止不会对开发产生影响但我只想让我的脑海中清楚这些事情.
如何使用Size类设计具有不同布局的iPad横向和纵向屏幕.我只能找到两个方向的w-regular和h-regular.示例:我需要使用Size Class在纵向和横向上垂直对齐2个视图
在Xcode 6.1上使用Interface Builder中的Storyboard文件时,Apple建议设计Any/Any size类.完成后,不同大小的类有时会报告警告:
错位视图 - "某些按钮"的框架在运行时会有所不同.
您可以通过执行以下操作来解决:
Editor -> Resolve Auto Layout Issues -> (All Views) Update Frames如果您在故事板中有20个不同的场景(20 x 9大小类= 180个手动帧更新),这非常麻烦.
有没有办法在一个命令中告诉Xcode 6.1每个场景中的每个场景的"更新帧"?
因此,我正在尝试创建一个UIScrollView仅在故事板中,允许我添加滚动标签超过VC的高度.这是我做的:
创建UIScrollView占用任何宽度任何高度VC的大小
对于顶部,底部,左侧和右侧的最近邻居间距设置约束0
创建的视图是一个subView的UIScrollView与所述相同的宽度的任何宽度的任何高度,但VC 1500高度(因为我只希望它垂直滚动).
将约束设置为最近邻居为0仅适用于左侧,上方和右侧,并将高度约束设置为1500.
我在顶部subView和底部放了一个标签
当我在iPhone 6上运行应用程序时,不会按我希望的方式垂直滚动.任何想法为什么这不起作用?提前致谢.
我正在调整我的UI应用程序,但我遇到了一个我无法解决的问题.
我可以看到Compact高度会影响4.7英寸以下的所有iPhone,但我的用户界面很好,除了iPhone 4S(3.5英寸).
我不想修改4.7英寸以下的所有iPhone的布局,只需要修改iPhone 4S,同时我不想遗漏这个设备.
有任何解决方法,所以我可以设置修正案,但仅适用于3.5英寸的肖像?或者我应该告别那里的1亿台设备?
我知道这是一个棘手的问题,几乎是民意调查,但从技术上讲,我想在这里找到最好的方法.
size-classes ×10
ios ×7
ios8 ×5
autolayout ×3
iphone ×3
ipad ×2
xcode6 ×2
adaptive-ui ×1
objective-c ×1
scene ×1
storyboard ×1
uiscrollview ×1
xcode ×1