【问题标题】:AutoLayout design for ios7 4S and IOS8 5Sios7 4S和IOS8 5S的AutoLayout设计
【发布时间】:2014-12-15 05:23:36
【问题描述】:

我为我的客户开发了一个应用程序,我的客户和我使用的是 iPhone 4s(IOS7)。最近我的客户在 5c(IOS8) 中使用了我的代码。现在有各种各样的问题。现在我开始研究这些问题。 有人建议我使用AutoLayout 设计 UI。在我的项目中,我没有使用 XIB,我只是以编程方式进行操作,我与 XIbs 没有联系。所以现在我开始以编程方式对 AutoLayout 进行研发。但我无法理解它(以编程方式自动布局)。有什么建议吗?

IOS 7 4S

IOS8 5S

【问题讨论】:

  • 在我的选择中你使用自动调整大小,它对你的设计更好

标签: ios objective-c ios7 ios8 autolayout


【解决方案1】:

首先做一些阅读以了解自动布局实际上是什么以及应该如何使用它。看看here 和/或观看this。他们都使用故事板,但它们可以帮助您理解自动布局的概念。在 Ray Wederlich 的网站上,您还可以找到有关如何务实地使用自动布局的其他文档,但我认为您必须为此付费。这是值得的,但您也可以免费在线查找其他帮助。

我遵循的基本原则是:

  • 创建视图

    UIView *myView = [UIView new];
    
  • 设置 translatesAutoresizingMaskIntoConstraints 属性

    myView.translatesAutoresizingMaskIntoConstraints = NO;
    
  • 将视图添加为子视图

    [self.view addSubview:myView];
    
  • 添加约束

    NSLayoutConstraint *constraint = [NSLayoutConstraint constraintWithItem:myView 
                             attribute:NSLayoutAttributeTop 
                             relatedBy:NSLayoutRelationEqual
                                toItem:self.view 
                             attribute:NSLayoutAttributeTop
                            multiplier:1.0 
                              constant:0.0];
    
    [self.view addConstraint:constraint];
    

您需要添加多个约束才能完全按照您想要的方式相对于它周围的其他视图来布局视图。

我还建议创建您自己的类别,以便在阅读自动布局代码时更快、更容易理解。例如:PureLayout

如果您能够使您的问题更具体一点,则可以为您提供一些更好的示例代码,但是您的问题太大太宽泛,因此请采纳此答案以及其他答案中给出的建议并对该主题进行一些阅读。首先创建一个简单的项目并使用自动布局来布局一些视图,然后随着您变得更加自信,构建更复杂的视图。

【讨论】:

  • @Hoston,只需添加代码 [yourview addConstraints : constraint];
  • 干杯。我知道我会在做这件事的时候错过一些东西。
【解决方案2】:

如果您想以编程方式使用auto layout,请使用此link,另一个链接是here

这包含NSLayoutConstraint.h 文件下UIKIT 框架中可用的所有NSLayout 枚举类型。

typedef NS_ENUM(NSInteger, NSLayoutAttribute) {
NSLayoutAttributeLeft = 1,
NSLayoutAttributeRight,
NSLayoutAttributeTop,
NSLayoutAttributeBottom,
NSLayoutAttributeLeading,
NSLayoutAttributeTrailing,
NSLayoutAttributeWidth,
NSLayoutAttributeHeight,
NSLayoutAttributeCenterX,
NSLayoutAttributeCenterY,
NSLayoutAttributeBaseline,

NSLayoutAttributeNotAnAttribute = 0
};

【讨论】:

  • 如果你需要帮助问我,我当然希望你
猜你喜欢
  • 1970-01-01
  • 2014-12-05
  • 2013-11-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多