`

[IOS]通过约束来改变控件位置

    博客分类:
  • IOS
阅读更多

1.约束构造器:

 NSLayoutConstraint(item: ViewObject1, 
  attribute: NSLayoutAttribute1, 
  relatedBy: NSLayoutRelation, 
  toItem: ViewObject2, 
  attribute: NSLayoutAttribute2, 
  multiplier: CGFloatMultiplier, 
  constant: CGFloatConstant
)
ViewObject1 - the view from which we are constraining
NSLayoutAttribute1 - An NSLayoutAttribute, ex. Left, Right, Leading, Trailing, see full list here
NSLayoutRelation - An NSLaoyoutRelation, determines the relation between 2 attributes. Example Leading Edge of View Equals Leading Edge of SuperView. The possible values are  LessThanOrEqual, Equal, GreaterThanOrEqual. see full details here
ViewObject2 - is the second vew to which we are constraining
NSLayoutAttribute2 - The constraint addribute for the second view, ex Leading, Trailing, Width, etc
CGFloatMultiplier - The multiplier applied to the second attribute participating in the constraint.
CGFloatConstant - The value of the constraint. Ex. 20 points from the superview

 

例子:

NSLayoutConstraint *center = [NSLayoutConstraint constraintWithItem:_datePicker attribute:NSLayoutAttributeCenterX relatedBy:NSLayoutRelationEqual toItem:_networkEnabled attribute:NSLayoutAttributeCenterX multiplier:1 constant:0];

 

2.查看第二个依赖控件:

[_setTimeTvTopConstraint secondItem]

 

3.创建两条约束,指向不同控件:

 

4.在代码中建立约束的链接:

@property (weak, nonatomic) IBOutlet NSLayoutConstraint *setTimeTvTopConstraint;
@property (weak, nonatomic) IBOutlet NSLayoutConstraint *setTimeTvTopPwdConstraint;

 

5.只需要在Remain Time 控件隐藏时,调整

_setTimeTvTopPwdConstraint.constant = 22;

即可自动上移。 

 

注意:在storyboard中定义的约束,relation firstItem secondItem都是只读属性,修改不了,固定了。如果不想重新控件画图,暂时发现只能通过这种约束方式来移动。

 

6.通过不同情况来添加或删除约束:

例如某些情况下靠边,某些情况下居中:

先设置靠边约束,然后设置居中约束,但是把installed前的勾取消




 

 

把约束链接到代码中,然后可以通过代码来控制不同情况的展示了:

 

if (!_timeRadioGroup.hidden) {
        NSLog(@"radio group:%i",_timeRadioGroup.hidden);
        [_align2ShowBtnConstraint setActive:YES];
        [_datePickerCenterConstraint setActive:NO];
    }

setActive可以决定哪个约束活动。 

  • 大小: 15.2 KB
  • 大小: 17.2 KB
  • 大小: 14.3 KB
分享到:
评论

相关推荐

    iOS通过代码动态添加和删除控件

    - 如果是动态添加多个同类型的控件,可以使用for循环,并根据索引或其他条件改变控件的位置和内容。 2. **动态删除控件**: - 删除控件通常涉及到对视图层次结构的修改。在Swift中,可以使用`removeFromSuperview...

    ios-4个约束后的控件中间间距一样.zip

    "ios-4个约束后的控件中间间距一样.zip"这个资源包显然关注的是Auto Layout,一种在iOS中用于动态调整用户界面元素大小和位置的机制。在iOS开发中,尤其是使用Swift或Objective-C时,Auto Layout允许开发者创建适应...

    ios-控件.zip

    "ios-控件.zip"这个压缩包显然包含了使用Swift编写的一些基础UI控件,这对于初学者来说是一个很好的学习资源。下面我们将深入探讨Swift中的控件,特别是“按钮”这一标签所涉及的知识点。 1. **Swift基础**:首先,...

    ios-多选题按钮控件.zip

    在iOS开发中,创建自定义多选按钮控件是一项常见的任务,这有助于为用户提供更加灵活和个性化的交互体验。...开发者可以通过研究这个示例来学习如何在iOS中实现类似的需求,提升自己的UI编程技能。

    ios应用源码之评分控件 20181210

    1. **自定义控件创建**:在iOS开发中,如果系统自带的控件不能满足需求,我们可以通过继承UIView类来自定义控件。对于评分控件,我们需要创建一个名为`RatingView`的子类,继承自UIView。在这个类中,我们可以添加...

    iOS 代码约束 , 易用

    4. **固定大小**:同时,也允许设定视图的大小不变,即使在约束改变时保持其原始尺寸。 为了实现这些功能,"SetFrameCategory"可能封装了如下的方法: - `addConstraintWithItem:attribute:relativeToItem:...

    IOS应用源码——评分控件.zip

    2. Auto Layout:为了适配不同屏幕尺寸和设备,我们需要使用Auto Layout来约束控件的位置和大小。在创建评分控件时,每个星星的布局和间距都需要用Auto Layout进行精确设定。 3. IBDesignable和IBInspectable:这两...

    iOS开发 自定义actionSheet控件

    在布局方面,我们可以使用AutoLayout的约束来确定每个按钮的位置和大小。这不仅可以确保按钮在不同设备上的适配,还可以轻松地实现动态调整,如当按钮数量变化时,自动调整布局。 为了实现点击事件,我们需要为每个...

    iOS编写Android的Toast控件

    在iOS中,我们没有直接对应的内置控件,但可以通过自定义UIView或UIAlertController来模拟这种功能。以下是一些关键步骤和知识点: 1. **自定义UIView**: 创建一个新的Swift类,继承自UIView。在这个类中,我们...

    ios自定义星级控件

    此外,为了允许开发者任意改变星级控件的位置,我们可以在`StarView`类中提供一个公共方法,允许设置控件的坐标或者约束。这样,开发者可以在 storyboard 或代码中自由调整星级控件的位置。 ```swift func ...

    ios自定义时间控件

    在iOS开发中,有时我们需要创建自定义的时间控件来满足特定的设计需求,比如显示年月日时分,并且这些时间单位以10的倍数进行选择。本篇将深入探讨如何在iOS应用中实现这样的自定义时间控件。 首先,我们要明白在...

    iOS 自定义控件 progressView(环形进度条)

    控件的大小和环的半径可以通过设置view的frame或者约束来调整。半径的大小影响着进度条的视觉效果,合理的半径可以使控件更加易读。 7. **起点和方向**: 进度条默认从0点(即顶部)开始,按照顺时针方向旋转。...

    IOS Swift UI控件实现大全

    2. **Swift中的Auto Layout**:Swift支持Apple的Auto Layout系统,允许开发者通过约束定义视图的位置和大小,以适应不同屏幕尺寸和设备方向。在本项目中,可以看到如何使用NSLayoutConstraint或者UIStackView来实现...

    iOS视图约束

    视图约束通过定义视图之间的关系来决定它们在屏幕上的位置和大小。这些关系包括距离、相对大小和对齐方式。每个约束包含四个基本属性:视图、属性、关系和常量。例如,你可以设置一个约束,使一个按钮的左边与父视图...

    ios-高仿京东下拉刷新控件.zip

    这需要利用Core Animation框架,通过改变layer的transform属性实现位移,通过CADisplayLink或者NSTimer控制动画帧率。 4. **交互处理**:当用户开始下拉时,启动动画;当用户松手或数据加载完成后,停止动画并恢复...

    IOS控件阴影和圆角

    在iOS中,我们可以通过修改CALayer的属性来改变控件的外观,包括设置圆角和添加阴影。 1. **设置圆角(CornerRadius)**: 要让一个控件(如UILabel)显示为圆形或有圆角,可以修改其layer的cornerRadius属性。例如,...

    (实例037)动态改变控件尺寸.rar

    在编程领域,尤其是在GUI(图形用户界面)设计中,动态改变控件尺寸是一项重要的技能,特别是在创建响应式或自适应用户界面时。本实例037着重探讨如何在不同的编程环境中,如Windows Forms、WPF、Qt、Android、iOS等...

    ios基础控件使用

    在iOS开发中,掌握基础控件的使用是至关重要的,因为它们构成了用户界面的基本元素。以下将详细讲解标题“ios基础控件使用”所涵盖的知识点,并基于描述中提到的控件进行深入探讨。 1. **UIView**:UIView是所有UI...

    iOS KVO 监听frame

    - 结合Auto Layout,KVO可以用来在约束改变时同步更新其他视图的状态。 - 在MVVM(Model-View-ViewModel)架构中,KVO可以用来绑定ViewModel的属性到View,实现数据驱动的界面更新。 通过理解并正确使用KVO监听...

    ios-最全的评分功能.zip

    这可能是通过设置UIEdgeInsets或修改视图的约束来实现的,使得开发者可以根据界面设计自由调整星星之间的距离,以适应不同的屏幕尺寸和视觉风格。 对于图像处理,如果出现星星模糊的问题,这可能是因为图片没有适配...

Global site tag (gtag.js) - Google Analytics