Tag: 自动

你真的可以将约束链接到完全不同的视图控制器吗?

想象一下,你有一个屏幕有一个视图控制器(与容器视图,或其他)。 (如果你喜欢的话,可以考虑一个iPad应用程序,它有很多大的,复杂的区域,每个区域都有自己的子容器视图,用于列表,控件等等) 即使 – 也许你有隐藏的风险投资,在屏幕上滑动,甚至可能只是在caching中,并没有呈现,或者你可能有一些“堆叠在一起”的屏幕,所以有些甚至不可见。 所以说你有一个观点v var v: UIView 在这些视图控制器中的一个中,以及视图w var w: UIView 在一个完全不同的视图控制器。 出于某种原因,您希望两个项目在屏幕上具有相同的宽度 。 事实上。 你可以NSLayoutConstraint之一? (显然你不能在故事板上,这没什么大不了的,你可以在布局的时候用代码来做)。 那可能吗? 当其中一个风险投资者消失时,会引起问题吗? (事实上​​,约束会导致一个很难的参考?) 这有什么关系?

使用自动布局在CollectionView的CollectionViewCell中自动调整图像大小

我有一个水平的UICollectionViewFlowLayout的collectionView。 我正在努力实现: 如果设备方向是纵向,则UIImageView宽度将被视为宽度,并自动计算高度(就像通常在自动布局中发生的那样)。 和风景模式一样。 示例 – iPhone上的标准照片应用程序。 不幸的是,我不明白如何用autoLayout实现它。 我为UIImageView设置了与单元大小相同的约束。 但看起来像卖本身不能被固定到父视图。 看完类似的问题看起来像单元格必须通过编程resize func collectionView(collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, sizeForItemAtIndexPath indexPath: NSIndexPath) -> CGSize { return CGSize(width: width, height: height) } 而在这里我卡住,因为我知道屏幕的宽度,但不知道如何dynamic计算高度。 关于图像高度: 我有这样的声明: var pageImages = [UIImage]() override func collectionView(collectionView: UICollectionView, cellForItemAtIndexPath indexPath: NSIndexPath) -> UICollectionViewCell { let cell: ImageDetailViewCell = collectionView.dequeueReusableCellWithReuseIdentifier(reuseIdentifier, forIndexPath: indexPath) as! ImageDetailViewCell […]

UIView在UINavigationBar下方使用Autolayout

我需要在UINavigationBar (由UINavigationController拥有)下使用Autolayout来挂接一个UIView 。 这里棘手的是UIView需要成为UIApplication主UIWindow的子视图。 插入的视图需要跟踪导航栏的位置,例如,如果iOS状态栏增长到双倍高度(例如,在绿色的“返callback用”场景中),或者在横向视图中更改高度。 该解决scheme还需要使用透明的UINavigationBar ,其中视图控制器的edgesForExtendedLayout没有设置为None。

UIViewanimation一个约束会影响另一个约束

我有一个UIImageView,我想在后台使用泛效应缓慢animation。 我的背景图片视图有四个约束: 从顶部到顶部布局指南的距离(零) 从底部到底部布局指南的距离(零) 宽度(恒定在850) 引导空间超级查看(零,连接到代码为backgroundImageViewLeftMargin outlet) 图像视图的视图模式设置为“纵横填充”。 当我运行我的应用程序,没有问题,静态图像显示。 我添加下面的代码来animation我的视图: -(void)animateBackgroundHorizontally:(BOOL)forward{ self.backgroundImageViewLeftMargin.constant = forward ? -500 : 0; [self.backgroundImage setNeedsUpdateConstraints]; [UIView animateWithDuration:30 animations:^{ [self.backgroundImage layoutIfNeeded]; } completion:^(BOOL finished) { [self animateBackgroundHorizontally:!forward]; }]; } 然后我调用[self animateBackgroundHorizontally:YES]; 在… viewWillAppear: 。 这是发生了什么事情: 图像从一个意想不到的(但总是相同的)位置开始animation(顶部边缘位于屏幕的中间位置,应该在屏幕的顶部),正确地animation到其最终位置,然后在animation返回到原始位置时位置,它确实animation正确 。 我animation的唯一属性是左边距。 当我不调用animation代码时,它显示正确。 为什么animation从图像上看到的位置不正确? 我试过将self.backgroundImage.translatesAutoresizingMaskIntoConstraints设置为YES (我无法同时满足constaints错误)和NO但它没有工作。 这个问题在iOS 6和iOS 7上都是持久的。

是否有可能将UIView的顶部固定到导航栏的底部?

我试图定位我的UIView是在导航栏下20pt,但是当我把它设置为相对于视图控制器上的视图,它仍然在20pt的导航栏下,我不想硬编码。 是否有可能将其放置在导航栏之外?

当Autolay正在播放时,用UIDynamicAnimator进行animation处理

我有一个已经在InterfaceBuilder中configuration的ViewController为所有子视图使用AutoLayout。 布局工作正常。 我想用UIDynamicAnimator提供的很酷的重力效果让其中一个子视图反弹。 我不认为这将适用于AutoLayout,但我尝试过,它确实如此。 它工作得很好! 我的问题是 ,这是预期的行为? 是否会在某个地方引起问题? 苹果公司是否提供关于AutoLayout和UIDynamicAnimators相结合的指导? 这里是代码,对于任何感兴趣的人: var boundaryFrame = self.buttonBackgroundView.frame boundaryFrame = CGRect(x: 0, y: boundaryFrame.origin.y + (boundaryFrame.height + 1), width: self.view.frame.width, height: 2) self.animator = UIDynamicAnimator(referenceView: self.view) var gravity = UIGravityBehavior(items: [self.buttonBackgroundView]) gravity.magnitude = 0.5 var collision = UICollisionBehavior(items: [self.buttonBackgroundView]) var boundaryId: NSMutableString = NSMutableString(string: "bottomBoundary") let boundaryPath = UIBezierPath(rect: […]

使用自动布局时,设置UICollectionViewFlowLayout的属性不起作用

我试图build立一个UICollectionView与UICollectionViewFlowLayout与以下要求: minimumLineSpacing应该总是正好UICollectionView的高度的三分之一 。 我最初的想法是重写viewDidLayoutSubviews像这样: override func viewDidLayoutSubviews() { super.viewDidLayoutSubviews() collectionViewFlowLayout.minimumLineSpacing = collectionView.frame.height / 3 collectionViewFlowLayout.invalidateLayout() } 请注意,我使用viewDidLayoutSubviews,因为我打算使用自动布局,框架可能取决于一些复杂的约束。 所以我不能自己计算框架,但必须等到自动布局计算出来让我在viewDidLayoutSubviews中使用。 我通过编程创build一个UICollectionView来testing这个(并且旋转模拟器来查看minimumLineSpacing是否总是正确的)。 它似乎工作得很好。 然后,我切换到自动布局。 我只是简单地将collections视图的顶部,底部,前后空间限制在其超级视图中。 这样做后,设置minimumLineSpacing不再有预期的效果,它只是没有改变集合视图的外观的任何东西。 以下代码很好地演示了这个问题。 只要我将useAutoLayout设置为true ,设置minimumLineSpacing不再工作。 class DemoViewController: UIViewController, UICollectionViewDataSource { var collectionView: UICollectionView! var collectionViewFlowLayout: UICollectionViewFlowLayout! // MARK: – UIViewController override func viewDidLoad() { super.viewDidLoad() collectionViewFlowLayout = UICollectionViewFlowLayout() collectionViewFlowLayout.itemSize = CGSizeMake(100, 100) collectionView = […]

UILabel显示在debugging视图层次结构中,但不在应用程序中

我有一个UIView,我通过Interface Builder添加到ViewController中。 在我的代码中,每次按下button时,都会在此UIView中创build一个标签: func addToDisplay(stringToDisplay: String) { let label = UILabel(frame: CGRectMake(0, 0, 10, 10)) label.text = stringToDisplay label.textColor = UIColor.redColor() label.textAlignment = .Right label.sizeToFit() label.adjustsFontSizeToFitWidth = true label.minimumScaleFactor = 0.5 label.setTranslatesAutoresizingMaskIntoConstraints(false) var lastLabel: UILabel? if displayView.subviews.count > 0 { lastLabel = displayView.subviews[displayView.subviews.count – 1] as? UILabel } displayView.addSubview(label) var viewsDictionary = ["displayView": displayView, "label": […]

可以子视图自动调整自己的超级视图自动布局?

如果您有一个没有约束的视图,并且该视图具有大小相等的左,右,顶部和底部约束的子视图,则如果子视图的大小增加,则超级视图的大小可以自动增加以适应这些约束? 谢谢。

如何使用AFIncrementalStore在每个请求中添加一个Auth令牌?

我有一个iOS + Rails 3.1应用程序,我正在使用AFIncrementalStore进行客户端 – 服务器通信。 我已经根据这个教程在我的Rails服务器上实现了令牌authentication: http : //matteomelani.wordpress.com/2011/10/17/authentication-for-mobile-devices/ 我现在要在客户端到服务器的每个请求中包含&auth_token=XXXXXXXX ,包括POST请求。 我该怎么做? 我还没有find在这个相关的职位的解决scheme: 使用AFIncrementalStore与身份validation令牌 更新:这是我的第一次代码尝试,但似乎并没有发送auth_token : (在我的AFIncrementalStoreHTTPClient子类中) – (NSMutableURLRequest *)requestForFetchRequest:(NSFetchRequest *)fetchRequest withContext:(NSManagedObjectContext *)context { NSMutableURLRequest *request = [[super requestForFetchRequest:fetchRequest withContext:context] mutableCopy]; NSMutableString *requestBody = [[NSMutableString alloc] initWithData:[request HTTPBody] encoding:NSUTF8StringEncoding]; [requestBody appendFormat:@"&%@=%@", @"auth_token", @"xkT2eqqdoNp5y4vQy7xA"]; [request setHTTPBody:[requestBody dataUsingEncoding:NSUTF8StringEncoding]]; return request; }