Tag: 自动布局

在自动布局中处理iOS应用程序中的语言更改

在我们的应用程序中,我们必须支持英语和阿拉伯语,但是语言更改选项在应用程序本身中可用。 之前,我们已经处理了代码中左右两边的语言更改。 从iOS 9起,devise具有自动布局的用户界面将被正确处理,同时在iPhone设置中更改语言。 根据我的要求,我们已经改变了应用程序内的语言,并直接更新了“AppleLanguages”键。 但故事板没有正确更新。 一旦我强制退出应用程序并重新启动它,那么它工作正常。 我需要澄清的是,是否有任何解决scheme来改变这种(应用程序内的语言),而无需重新启动应用程序? 如果不是,重新启动应用程序,我可以显示一个提醒并退出应用程序(通过使用退出(0))? 这是否会通过应用程序审查小组批准?

自动布局,屏幕旋转和UIViewanimation

我遇到了UIView的一个问题,我添加到屏幕的底部并将其animation化,以填充大部分屏幕(如果按下button)。 该视图将上下animation并按预期旋转。 如果我在风景中尝试制作animation时,它会打破并给出错误消息: *** Assertion failure in -[UIScrollView _edgeExpressionInContainer:vertical:max:], /SourceCache/UIKit_Sim/UIKit-2380.17/NSLayoutConstraint_UIKitAdditions.m:2174 *** Terminating app due to uncaught exception 'NSInternalInconsistencyException', reason: 'Autolayout doesn't support crossing rotational bounds transforms with edge layout constraints, such as right, left, top, bottom. The offending view is: <UIView: 0x9199340; frame = (20 0; 748 1024); transform = [0, -1, 1, 0, 0, […]

IOS 8图像缩放和自动布局

可以说我有一个UIView只有一个图像在UIView的顶部集中,我提供了一个图像资源的图像像这样 正常的iPhone 4s和更早的50×50 @ 2x for iPhone 5 / 5c / 5s / 6 100×100 @ 3x for iPhone 6 + 150×150 所以很显然,图像的宽度和高度随着不同的设备而增加,所以问题是如何处理自动布局,我应该将宽度和高度约束设置为大于或等于或大于? 而且我该如何处理图像本身的定位呢? 最后我注意到,IOS模拟器总是在不同的设备上使用相同的映像,从我的端到端是一个错误还是一个问题?

在哪里添加topLayoutGuide约束代码

解 想出一个解决scheme,将下面的代码放在我的子类浏览控制器.m文件的viewDidLoad方法中: – (void)viewDidLoad { [super viewDidLoad]; // Do any additional setup after loading the view. if ([[[UIDevice currentDevice] systemVersion] floatValue] >= 7.0f) { [[self view] setTranslatesAutoresizingMaskIntoConstraints:NO]; id topGuide = [self topLayoutGuide]; UIView * selfView = [self view]; NSDictionary *viewsDictionary = NSDictionaryOfVariableBindings (selfView, topGuide); [[[self view] window] addConstraints: [NSLayoutConstraint constraintsWithVisualFormat:@"V:[topGuide]-0-[selfView]" options:0 metrics:nil views:viewsDictionary] ]; [[[self […]

UINavigationBar旋转和自动布局

关于通过在场景中插入UINavigationBar来devise自己的视图控制器,我发现许多关于旋转设备时帧高度不会改变的问题的参考。 这与苹果如何在其导航控制器中使用UINavigationBar的情况形成鲜明对比。 虽然有些build议事实上显示了如何改变高度以符合苹果的做法,但所有的答案都不能解决与现场其他观点的适当关系。 特别是在构build一个使用autoLayout的场景时,你不应该调整框架 – 自动布局是通过你定义的约束为你设置的。 例如,一个build议是这样做的: – (void)willRotateToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation duration:(NSTimeInterval)duration { [self.navigationBar performSelector:@selector(sizeToFit) withObject:nil afterDelay:(0.5f * duration)]; } 虽然这将改变大小,但与其他观点的关系不再正确。 尽pipe上面例子中的海报确实提供了一个解决调整关系的解决scheme,但这更像是一种硬编码的方法,并非苹果公司可能提出的一种方法,也就是说,它不是一个autoLayout友好的解决scheme。 通过实验,我注意到在旋转设备时,intrinsicContentSize事实上确实改变了,但是框架没有改变。 注意到这一点,我尝试了以下几点: – (void)viewDidLayoutSubviews { [super viewDidLayoutSubviews]; CGRect frame = self.navigationBar.frame; frame.size.height = self.navigationBar.intrinsicContentSize.height; self.navigationBar.frame = frame; } 虽然这确实改变了大小,就像上面的例子一样,它也导致了不正确的视图关系。 具体来说,我的横向设备: 然后切换到肖像: 有谁知道苹果如何使用约束来解决UINavigationBar布局问题?

UITableViewCell标签显示一些向上滑动animation

我在一个tableView中显示人员列表。 点击任何单元格后,应用程序将显示一个新的屏幕。 当用户回到前一个屏幕时,应该出现一个tableView。 在这里,当用户用tableView返回到屏幕时,我调用服务器API来获取更新的人员列表,并重新载入表格以显示它们。 问题是当用户回到屏幕上并显示tableView时, UITableViewCell标签被animation了一下。 这个animation是这样的,标签从正确的位置和animation向上移动到正确的位置。 这个animation不是我自己实现的,我也不想要。 其可见约0.5-1秒。 在animation之前和之后比较标签的位置。 有没有人经历过这个? 注意: 请注意,我使用了自动布局。 这可能是一个问题,因为在使用自动布局之前,这个问题不存在。 编辑:试图禁用隐式animation如下所示,但无法正常工作。 NSMutableDictionary *newActions = [[NSMutableDictionary alloc] initWithObjectsAndKeys:[NSNull null], @"onOrderIn", [NSNull null], @"onOrderOut", [NSNull null], @"sublayers", [NSNull null], @"contents", [NSNull null], @"bounds", nil]; cell.textLabel.layer.actions = newActions; cell.detailTextLabel.layer.actions = newActions; cell.layer.actions = newActions; cell.contentView.layer.actions = newActions;

在带有AutoLayout的UIScrollView中的固定/浮动视图

在这个技术说明中, Apple声明可以通过向UISCrollView的超级视图添加约束来使UIScrollView的子视图固定/浮动。 我试过,但我做错了什么,我不明白什么是问题。 请注意,您可以通过在视图和滚动视图的子树之外的视图(如滚动视图的超级视图)之间创build约束来使滚动视图的子视图浮动(不滚动)其他滚动内容。 这就是我所做的。 我有一个UIScrollView已经设置,并尝试将固定的视图添加到滚动视图的顶部,如下所示: _testOverlay = [[UIView alloc] init]; _testOverlay.backgroundColor = [UIColor blueColor]; _testOverlay.translatesAutoresizingMaskIntoConstraints = NO; [self.scrollView addSubview:_testOverlay]; [self.view addConstraints:[NSLayoutConstraint constraintsWithVisualFormat:@"|[_testOverlay]|" options:0 metrics:nil views:NSDictionaryOfVariableBindings(_testOverlay)]]; [self.view addConstraints:[NSLayoutConstraint constraintsWithVisualFormat:@"V:|[_testOverlay(64)]-(>=0)-|" options:0 metrics:nil views:NSDictionaryOfVariableBindings(_testOverlay)]]; 但是,这不起作用,添加的视图将随着滚动视图一起移动,而不会“浮动”。 任何想法这里错了什么?

用Swiftanimation视图高度

我有我的ViewController中查看sView 。 它的高度有约束 – 我为这个约束创build了IBOutlet – sViewHeightConstraint 。 我想用animation降低sView的高度。 我创build了函数 UIView.animateWithDuration(5.5, animations: { self.sViewHeightConstraint.constant = 50 }) 视图高度正在改变,但我没有看到任何animation。 我做错了什么?

以编程方式更改视图尺寸时,Autolayout似乎不起作用

我有一个UITableViewCell的自定义子类与一些约束设置。 问题是当我尝试改变一个视图的大小,像这样: CGRect frm = CGRectMake(0, 0, someValue, 30); cell.indentView.frame = frm; 其他依赖于cell.indentView宽度的视图根本不移动。 可能是什么情况? 此代码将工作: // enumerate over all constraints for (NSLayoutConstraint *constraint in cell.indentView.constraints) { // find constraint on this view and with 'width' attribute if (constraint.firstItem == cell.indentView && constraint.firstAttribute == NSLayoutAttributeWidth) { // increase width of constraint constraint.constant = someValue; break; } […]

AutoLayout约束问题与意外的NSAutoresizingMaskLayoutConstraint

我以编程方式使用自动布局约束,并且经常在我的应用程序中看到相同types的错误,通常与约束如下所示: "<NSAutoresizingMaskLayoutConstraint:0x82da910 h=–& v=–& V:[UITableViewCellContentView:0x82d9fb0(99)]>" 我已经把一些示例代码重现在https://github.com/nicolasccit/AutoLayoutCellWarning 在这个例子中,我使用2个UI元素创build了一个非常简单的视图:一个名为imageThumbnail的图像视图和一个名为labelName的标签,带有一些约束条件: "H:|-padding-[_imageThumbnail(==imageWidth)]-[_labelName]"; "V:|-padding-[_imageThumbnail(==imageHeight)]-padding-|"; "V:|-padding-[_labelName]"; 在这两个元素上,我将AutoresizingMaskIntoConstraints设置为NO。 我得到以下例外: Probably at least one of the constraints in the following list is one you don't want. Try this: (1) look at each constraint and try to figure out which you don't expect; (2) find the code that added the unwanted constraint or constraints […]