标签: size-classes

Any-Any大小类被ios7忽略

我正在为iOS7和8 iPhone开发.由于iOS7不支持紧凑高度大小类,我认为解决这个问题的共识是使用任意大小的类来构建横向iPhone布局,并使用纵向宽度常规高度(cWrH)大小类来实现肖像iPhone布局.

我在any-any中对视图设置了约束,然后将cWrH中的约束常量修改为特定于该size类.但是,iOS7设备和Xcode预览会忽略any-any约束,并对纵向和横向使用cWrH约束.

我不知道为什么会这样.我想要做的就是根据方向设置不同的约束.

使用最新的Xcode 6.0.1可以轻松复制.

半相关:Xcode 6自适应UI如何与iOS 7和iOS 6向后兼容?

屏幕截图如下:

在Any-Any中,矩形的x和y为0 对于cWrH大小类,y = 100

interface-builder ios xcode6 size-classes

8
推荐指数
1
解决办法
872
查看次数

iOS对不同设备的不同约束

我有一个专为iPhone SE设计的ViewController

在此输入图像描述

如你所见,我也有一个约束 Align Top to: Safe Area Equals 75

问题是,是否可以为iPhone 8和iPhone 8 Plus更改此值?例如:

  • SE = 75
  • 8 = 85
  • 8加= 105

xcode ios size-classes

8
推荐指数
3
解决办法
4309
查看次数

什么是最容易获得UIViewController的size类?

在WWDC 2014平台国家联盟演讲中,Apple工程师介绍了size classes他说我们可以将iPhone大小的UI视为一个compact size class和iPad大小类一样regular size class.但是大小类不受特定设备的限制.他们比那更普遍.如果一个视图控制器看起来像一个iPhone - 它的纵横比与它类似 - 它将具有一个紧凑的大小类.

是否可以在某个时间查看viewcontroller使用的大小类?我发现模拟器内容和Interface Builder预览之间存在矛盾,我想更深入地了解它为什么会发生.

ios size-classes

7
推荐指数
1
解决办法
3311
查看次数

iOS 7中的大小类

我使用Size Classes在Xcode 6中创建了一个新的应用程序.在使用iOS 7进行测试后,我无法弄清楚如何在横向模式下让iPhone显示特定大小的类.

我首先使用iPhone版本开发了UI作为wAny hCompact,但iOS 7无法识别.我在wAny hAny中有iPhone肖像.

然后我改变它,所以现在我正在使用wCompact hRegular for iPhone portrait.然后我修改了wAny hAny作为横向布局.但是当iOS 7设备处于横向状态时,它不会使用该布局.

iOS 7是否能够根据设备的纵向或横向使用不同的大小类?如果是这样,我应该使用哪个尺寸类?

参考: 有关向后兼容大小类的实用信息.

PS.我并不关心iPad,因为根据iOS 8中的设备旋转,设备不会显示不同的大小类.

iphone xcode size-classes

7
推荐指数
1
解决办法
7558
查看次数

在Xcode 6中减少Storyboard编译时间

我将故事板从旧项目转换为大约30个场景到Xcode 6中的启用大小类的模式.在设置至少一个场景的约束后,我正在尝试编译项目和Storyboard编译时间非常长.我将故事板分成两个故事板来重新编译只编辑过的故事板,但看起来每次都重新编译它们(再次,即使只编辑了其中一个): 在此输入图像描述

有没有办法设置选项只编译编辑过的Storyboard,或只有指向的Storyboard?也许还有其他选择,很高兴阅读答案!

xcode ios xcode-storyboard nslayoutconstraint size-classes

7
推荐指数
1
解决办法
2655
查看次数

无法更改为IB中的不同大小类定义的约束IBOutlet

我为这个案子做了一个特殊的测试应用程序.(对不起,已经删除了)

我在控制器的视图中添加了一个视图Storyboard,设置了AutoLayout约束Interface Builder,并使其中一个(垂直空间)不同于不同的大小类.IB的截图

所以值为100 for Any height, Any width和0 for Regular height, Regular width.它运行良好,在iPhone上垂直距离顶部是100,在iPad上它是0.

此外,我IBOutlet为此约束做了,并希望在运行时将其更改为10

@property (weak, nonatomic) IBOutlet NSLayoutConstraint *topVerticalConstraint;
Run Code Online (Sandbox Code Playgroud)

似乎我无法改变它,因为它没有任何效果

- (void)viewDidLoad
{
    [super viewDidLoad];
    self.topVerticalConstraint.constant = 10; // it doesn't work
}
Run Code Online (Sandbox Code Playgroud)

虽然它在我删除Regular height, Regular widthin的时候有效Interface Builder.

我想念大小班吗?

interface-builder ios autolayout nslayoutconstraint size-classes

7
推荐指数
1
解决办法
4767
查看次数

故事板+大小类:如何为不同的设备/大小类实现不同的Segues,ViewControllers,UserFlow?

现有的iOS 7+应用程序支持iPhone和iPad.目前我使用两种不同的故事板进行iPhone和iPad布局,效果很好.现在我尝试使用自适应大小类将其转换为One-Storyboard-Layout.

我的问题是,我的iPhone和iPad布局完全不同.它们不仅为控件使用不同的大小和位置,还使用一些完全不同的视图控制器.

两个故事板都使用MMDrawerController初始VC.但是从那里开始,控制流程就不同了.虽然iPad Storyboard使用了UISplitViewController所有其他ViewControllers的基础,但iPhone却使用了它UITabBarViewController.

这只是一个区别,但还有其他一些.如何在一个故事板中处理这些差异?为了达到这个目的,我将根据当前的Size Class来定义不同的segue.但据我所知,这是不可能的.

一些新的iOS 8自适应Segues的行为可能会有所不同,具体取决于Size Class,但据我所知,不可能为不同的Size Classes指定不同的segue.此外,根据Size Class,无法定义不同的初始ViewControllers.

所以问题是:是否可以在一个故事板中指定两种不同的布局(包括不同的Segues,ViewControllers等)?

切换到单个Storyboard的原因是支持iOS 9中的新分屏和幻灯片功能.在启动时加载不同的故事板取决于屏幕大小/大小类很容易.但是,当动态更改大小类时,无法在运行时切换到另一个Storyboard.是吗?

iphone uiviewcontroller ipad ios size-classes

7
推荐指数
1
解决办法
1272
查看次数

无法呈现和更新自动布局状态

几天前,我收到了这个错误,我完全陷入了我的项目.

这只是一个Runtime问题,我可以运行我的项目,但根本无法触摸界面构建器.

没有更改任何内容IB以启动此错误:

 *** Terminating app due to uncaught exception 'NSInternalInconsistencyException', reason: 'Invalid parameter not satisfying: bundleIdentifier != nil'
Run Code Online (Sandbox Code Playgroud)

我的包标识符不是nil.

这是我的日志文件

Process:               IBDesignablesAgentCocoaTouch [10742]
Path:                  /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/Library/Xcode/Overlays/IBDesignablesAgentCocoaTouch
Identifier:            IBDesignablesAgentCocoaTouch
Version:               8.1 (11524)
Code Type:             X86-64 (Native)
Parent Process:        launchd_sim [8117]
Responsible:           IBDesignablesAgentCocoaTouch [10742]
User ID:               501


Date/Time:             2016-11-11 18:10:08.256 -0200
OS Version:            Mac OS X 10.12.1 (16B2657)
Report Version:        12
Anonymous UUID:        544DA3C3-CD64-6444-0CE0-06F48A5B5FE9




Time Awake Since Boot: 9000 seconds


System Integrity Protection: enabled


Crashed Thread:        0


Exception …
Run Code Online (Sandbox Code Playgroud)

interface-builder autolayout swift size-classes xcode8

7
推荐指数
0
解决办法
1296
查看次数

如何为不同大小的类设置不同的约束

我希望视图的横向宽度为0.4,屏幕宽度为0.5.

所以我尝试过"因性状而异".我选择了wC hR并设置了0.5并点击了"完成".然后我选择了wR hR并设置为0.4,如下所示:

约束的设置

然而,两个尺寸等级仍显示为0.4.

我也尝试使用"视图为...(wC hR)等设置约束,而不使用约束变化.

我也尝试在显示的框中添加一个单独的大小类,但没有成功.

ios size-classes xcode8

7
推荐指数
1
解决办法
4046
查看次数

使用UIPopoverController显示的UIViewController错误的大小类

我正在开发具有通用故事板的通用iPhone/iPad应用程序.对于一些ViewControllers,如果他们在iPad上有一些特定的布局,我会使用大小类.

我有一个ViewController需要在iPhone上以模态方式呈现,但在iPad上它需要在UIPopoverController中显示.

UINavigationController *navigationController = [self.storyboard instantiateViewControllerWithIdentifier:@"ComposeMessageNavigationController"];
ComposeMessageViewController *viewController = (ComposeMessageViewController *)navigationController.topViewController;
//Prepeare my view controlller
...

if (IS_IPAD) {
    UIPopoverController * popover = [[UIPopoverController alloc] initWithContentViewController:navigationController];
    CGSize screenSize = [UIScreen mainScreen].bounds.size;
    CGRect popoverFrame = CGRectMake(screenSize.width / 2, screenSize.height / 2, 1, 1);
    [popover presentPopoverFromRect:popoverFrame inView:self.view permittedArrowDirections:0 animated:YES];
} else {
    [self presentViewController:navigationController animated:YES completion:^{
    }];
}
Run Code Online (Sandbox Code Playgroud)

它工作得很好但是大小类有问题.我在wRegular/hRegular Size Class的故事板上进行了一些更改,但在UIPopoverController的iPad上仍然显示了iPhone布局.这是因为popover的大小比iPad屏幕要低.我可以在Interface Builder中使用Size Classes进行更改,以便在iPad上的popover中显示它们但在iPhone上忽略吗?

objective-c ipad uipopovercontroller ios size-classes

6
推荐指数
1
解决办法
306
查看次数