Dan*_*iel 36 iphone ios autolayout ios6
我知道我错过了什么,因为这必须是一件容易实现的事情.
我的问题是我在我的"加载屏幕"(飞溅后出现的那个)UIImageView有两个不同的图像,用于3.5英寸和4英寸大小的屏幕.在该图像的某个位置,我放置了一个UIActivityIndicator,告诉用户应用程序正在后台加载某些内容.两个图像的位置不一样,因为其中一个明显高于另一个,所以我想设置一个autolayout约束,允许我将该活动指示器放在不同的高度,取决于应用程序是否在运行iPhone 5与否.
没有Autolayout,我将视图的frame.origin.y设置为300(例如),然后在ViewController的viewDidLoad方法中,我会问应用程序是否在iPhone 5中运行,所以我' d将值更改为,例如,350.我不知道如何使用Autolayout执行此操作,我认为它必须非常简单.
rob*_*off 109
您可以NSLayoutConstraint在视图控制器上创建一个插座,并将插座连接到xib或故事板中的活动指示器的Y约束.然后,updateViewContraints向视图控制器添加一个方法,并根据屏幕大小更新约束的常量.
这是一个例子updateViewConstraints:
- (void)updateViewConstraints {
[super updateViewConstraints];
self.activityIndicatorYConstraint.constant =
[UIScreen mainScreen].bounds.size.height > 480.0f ? 200 : 100;
}
Run Code Online (Sandbox Code Playgroud)
当然,你会想要输入适当的值而不是200和100.您可能想要定义一些命名常量.另外,别忘了打电话[super updateViewConstraints].
Ham*_*mza 17
@Rob答案的问题是你应该为每个约束做很多代码.因此,要解决这个问题,只需ConstraintLayout在代码中添加类并修改IB中所需设备的约束常量值:
//
// LayoutConstraint.swift
// MyConstraintLayout
//
// Created by Hamza Ghazouani on 19/05/2016.
// Copyright © 2016 Hamza Ghazouani. All rights reserved.
//
import UIKit
@IBDesignable
class LayoutConstraint: NSLayoutConstraint {
@IBInspectable
var 3¨5_insh: CGFloat = 0 {
didSet {
if UIScreen.main.bounds.maxY == 480 {
constant = 3¨5_insh
}
}
}
@IBInspectable
var 4¨0_insh: CGFloat = 0 {
didSet {
if UIScreen.main.bounds.maxY == 568 {
constant = 4¨0_insh
}
}
}
@IBInspectable
var 4¨7_insh: CGFloat = 0 {
didSet {
if UIScreen.main.bounds.maxY == 667 {
constant = 4¨7_insh
}
}
}
@IBInspectable
var 5¨5_insh: CGFloat = 0 {
didSet {
if UIScreen.main.bounds.maxY == 736 {
constant = 5¨5_insh
}
}
}
}
Run Code Online (Sandbox Code Playgroud)
不要忘记继承你的类约束ConstraintLayout
我将尽快添加objective-c版本
| 归档时间: |
|
| 查看次数: |
24867 次 |
| 最近记录: |