• iOS 动态改变约束

    2016-06-07 17:56:47
    有时候虽然添加了约束,但也想某时候作出改动,这是可以的: 约束对应的类是NSLayoutConstraint,我们也可以通过像其它可是对象一样,通过按下control,并拖动连线到头文件的 @interface下面,从而将约束变成对象...

    有时候虽然添加了约束,但也想某时候作出改动,这是可以的:

    约束对应的类是NSLayoutConstraint,我们也可以通过像其它可是对象一样,通过按下control,并拖动连线到头文件的

    @interface下面,从而将约束变成对象

    @property (strong, nonatomic) IBOutlet NSLayoutConstraint *currentViewCon;


    然后在需要修改的时候修改它的属性constant,达到修改的目的:

    _currentViewCon.constant = 100; //constant就是约束量,即下图的constant



    展开全文
  • 当使用xib,并使用了AutoLayout之后,当需要适配机型时,或者手动更改视图的frame的时候,就需要修改约束啦.其实很简单的. 1.首先从xib中吧改变的约束拖到view上或者ViewController上 @property (weak, nonatomic) ...

    当使用xib,并使用了AutoLayout之后,当需要适配机型时,或者手动更改视图的frame的时候,就需要修改约束啦.其实很简单的.
    1.首先从xib中吧改变的约束拖到view上或者ViewController上
    @property (weak, nonatomic) IBOutlet NSLayoutConstraint *topLayout;

    机型封装到单例中 全局都可以使用

    + (UIScreenSizeType)currentScreenSizeType
    {
        if (CGSizeEqualToSize(CGSizeMake(640, 960), [[UIScreen mainScreen] currentMode].size)) {
            return UIScreenSizeType_640x960;
        }
        else if(CGSizeEqualToSize(CGSizeMake(640, 1136), [[UIScreen mainScreen] currentMode].size)){
            return UIScreenSizeType_640x1136;
        }else if(CGSizeEqualToSize(CGSizeMake(750, 1334), [[UIScreen mainScreen] currentMode].size)){
            return UIScreenSizeType_750x1334;
        }else if(CGSizeEqualToSize(CGSizeMake(1242, 2208), [[UIScreen mainScreen] currentMode].size)){
            return UIScreenSizeType_1242x2208;
        }
    
        return UIScreenSizeType_000x000;
    }
            if([UIScreen currentScreenSizeType] == UIScreenSizeType_640x960){
                _topLayout.constant = 40;
            }else if([UIScreen currentScreenSizeType] == UIScreenSizeType_640x1136){
                _topLayout.constant = 40;
            }else if([UIScreen currentScreenSizeType] == UIScreenSizeType_750x1334){
                _topLayout.constant = 40;
            }else if([UIScreen currentScreenSizeType] == UIScreenSizeType_1242x2208){
                _topLayout.constant = 40;
            }

    2.还可以为控件自定义一个约束

      NSLayoutConstraint *myConstraint =[NSLayoutConstraint
                            constraintWithItem:iSinaButton //子试图
                            attribute:NSLayoutAttributeCenterX //子试图的约束属性
                            relatedBy:NSLayoutRelationEqual //属性间的关系
                            toItem:self.view//相对于父试图
                             attribute:NSLayoutAttributeCenterX//父试图的约束属性
                             multiplier:1.0 
                             constant:0.0];// 固定距离
    [self.view addConstraint: myConstraint];//为iSinaButton重新添加一个约束
    展开全文
  • iOS 自动布局修改约束

    2015-02-06 15:32:29
    1、修改某一控件的某个约束宽,高等。例如:对高的修改  NSArray* constrains = self.segment.constraints;   for (NSLayoutConstraint* constraint in constrains) {   if (constraint.firstAttribute ...

     

    1、修改某一控件的某个约束宽,高等。例如:对高的修改

        NSArray* constrains = self.segment.constraints;

        for (NSLayoutConstraint* constraint in constrains) {

            if (constraint.firstAttribute == NSLayoutAttributeHeight) {

                constraint.constant = 0.0;

            }

        }


    2、键盘弹出,遮挡输入框的修复

       1)首先,添加监听(代码的位置视个人需求而定,如果界面内没有其他监听,最好在viewWillApper中添加,在disApper中移除)

     //增加监听,当键盘出现或改变时收出消息

        [[NSNotificationCenter defaultCenter] addObserver:self

                                                 selector:@selector(keyboardWillShow:)

                                                     name:UIKeyboardWillShowNotification

                                                   object:nil];

        //增加监听,当键退出时收出消息

        [[NSNotificationCenter defaultCenter] addObserver:self

                                                 selector:@selector(keyboardWillHide:)

                                                     name:UIKeyboardWillHideNotification object:nil];


       2)添加辅助方法调整控件约束

    - (void)replacePickerContainerViewTopConstraintWithConstant:(CGFloat)constant

    {

        NSArray* constrains = self.view.constraints;

        for (NSLayoutConstraint* constraint in constrains) {

            if (constraint.firstAttribute == NSLayoutAttributeHeight) {

                constraint.constant = constant;

            }

        }

        

    }


       3)调整界面

    //当键盘出现或改变时调用(调整view位置,适应键盘高度,即:让view在键盘上)

    - (void)keyboardWillShow:(NSNotification *)aNotification

    {

        //获取键盘的高度

        NSDictionary *userInfo = [aNotification userInfo];

        NSValue *aValue = [userInfo objectForKey:UIKeyboardFrameEndUserInfoKey];

        CGRect keyboardRect = [aValue CGRectValue];

        CGFloat height = keyboardRect.size.height;

        

        float verson = [[[UIDevice currentDevice] systemVersion]floatValue];

        if (verson >= 8.0){//大于8.0调约束

            CGRect frame = self.nameField.frame;

            CGRect bounds = self.view.bounds;

            bounds.origin.y = height - (ScreenHeight - frame.origin.y - 50);

            [self replacePickerContainerViewTopConstraintWithConstant:height];

            [UIView animateWithDuration:0.25 animations:^{

                if (bounds.origin.y > 0){

                    self.view.bounds = bounds;

                    [self.view  layoutIfNeeded];

                }

                

            }];

        }else{//小于8.0调frame

            

            [UIView animateWithDuration:0.25 animations:^{

                if (ScreenHeight < 500){

                    self.view.top = -100;

                }

            }];

        }

    }


    //当键退出时调用

    - (void)keyboardWillHide:(NSNotification *)aNotification

    {

        float verson = [[[UIDevice currentDevice] systemVersion]floatValue];

        if (verson >= 8.0){

            CGRect bounds = self.view.bounds;

            bounds.origin.y = 0;

            [UIView animateWithDuration:0.25 animations:^{

                self.view.bounds = bounds;

                [self.view  layoutIfNeeded];

            }];

        }else{//小于8.0调frame

            [UIView animateWithDuration:0.25 animations:^{

                if (ScreenHeight < 500){

                    self.view.top = 0;

                }

            }];

        }

        

    }


       







    展开全文
  • 我们从xib中拖出约束动态修改优先级程序崩溃。 分析 试了几次发现,修改到1000就会崩溃 &nbsp; &nbsp; &nbsp; &nbsp; 崩溃原因 不允许优先级跨越1000修改(包括1000) 例: 从1000修改到750...

    我们从xib中拖出约束,动态的修改优先级程序崩溃。

    分析


    试了几次发现,修改到1000就会崩溃
     
     
     
     

    崩溃原因


    不允许优先级跨越1000修改(包括1000)

    例: 从1000修改到750,250或者250修改到1000以上
     
     
     
     

    解决


    把要修改的优先级更改为小于1000例如999

    展开全文
  • ios xib代码修改约束

    2018-07-16 15:52:46
    前言:修改代码修改xib约束:首先把约束属性拉倒.m文件里(像拉UI控件对象一样)如下图代码设置新居上距离: _lb_Y.constant = 15;

    前言:修改代码修改xib约束:首先把约束属性拉倒.m文件里(像拉UI控件对象一样)如下图

    代码设置新居上距离: _lb_Y.constant = 15;

    展开全文
  • iOSXib布局后代码修改约束的值 点击打开链接
  • 背景如标题,我在awakeFromNib或者viewDidLoad修改约束的constant值,没有生效,原因是: 你在 viewDidLoad中修改的约束的代码块运行了,但是运行完之后又被 storyboard自己的配置给覆盖了,所以 你看到的还是之前的...
  • 我知道的方法有两种: ...1.在改变完约束后,在动画块内,使用方法layoutIfNeeded,可以实现一般普通的动画效果。 2.使用Facebook的pop框架,给约束加动画,详情见:http://www.jianshu.com/p/1172578c96e1。
  • autolayout
  • sizeWithFont在ios7.0之后失效 cell.myCourse.text=cell_info.course; cell.myCourse.font=FONT; CGSize myCourseSize=[cell.myCourse.text sizeWithAttributes:[NSDictionary ...
  • 背景:从iOS11开始,突然发现项目里面进入tableView相关页面都开始报约束异常的问题,异常内容提示约束高度和Cell的contentView高度不一致。然后通过UI调试发现确实不一致了,但是很奇怪的问题是在iOS10以前的系统上...
  • 方式一 遍历 找到xib中的约束 修改 for(NSLayoutConstraint *constraint in self.constraints)  {  if (constraint.firstItem==self && constraint.firstAttribute== NSLayoutAttributeLeading) { ...
  • Xib布局后代码修改约束的值: http://www.cnblogs.com/xiaoxiaoyublogs/p/5863890.html 像添加属相的connect一样,添加约束的connect,比如添加了一个btn的width的connect,命名为btnwidth,在修改时,直接使用 ...
  • iOS 在xib或者storyboard中添加AutoLayout后,在代码中修改AutoLayout约束条件
  • 如何修改autolayout 约束的值? ? 1 2 3 4 5 6 style="font-family:SimSun;">目前我已知的方法有5种 ...2.修改约束的float值 3.使用VisualFormat 语言
  • ios-动画实现修改约束

    2017-07-26 17:48:19
    我们可以试着在storyboard中设置了一个view控件的的约束大小,然后通过拖线的方式去把这个view在控制器中引用,然后在代码中我们就可以修改这个view的相应的约束对象的值了,就比如说我们拖线过来引用的属性是...
  • 在xib中做好约束后,想到在代码中更改约束的值,只需要把对应的约束拉条线到对应的文件中 然后这样赋值就可以了
  • 1.约束构造器: NSLayoutConstraint(item: ViewObject1, attribute: NSLayoutAttribute1, relatedBy: NSLayoutRelation, toItem: ViewObject2, attribute: NSLayoutAttribute2, multiplier: CGFlo....
  • 有的时候,需要我们通过代码手动添加一些控件的约束,怎么做呢 假使我们已经创建好了某个空间的constant约束,比如下图中鼠标选中的这个 选中他,然后拖动到右边 这样 就和.m文件关联起来 打开.m函数,检查这个函数 ...
  • 如何修改autolayout 约束的值? 1 2 3 4 5 6 目前我已知的方法有5种 ...2.修改约束的float值 3.使用VisualFormat语言 4.使用constraintWithItem,按倍率改变如2x+1=Y 5.移除约束(remove...
1 2 3 4 5 ... 20
收藏数 11,447
精华内容 4,578