编程细节- 4

33.Autolayout 如果传属性需要用下滑线来声明约束:

    self.loginView = [[SYLoginView alloc] init];
    [self.view addSubview:self.loginView];
    
    NSArray* constraints1 = [NSLayoutConstraint constraintsWithVisualFormat:@"H:[_loginView(==width)]"
                                                                    options:0
                                                                    metrics:@{@"width":@300}
                                                                      views:NSDictionaryOfVariableBindings(_loginView)];
    
    NSArray* constraints2 = [NSLayoutConstraint constraintsWithVisualFormat:@"V:[_loginView(==height)]"
                                                                    options:0
                                                                    metrics:@{@"height":@300}
                                                                      views:NSDictionaryOfVariableBindings(_loginView)];
    [self.view addConstraints:constraints1];
    [self.view addConstraints:constraints2];  
如果上面的_loginView改成self.loginView那就蛋疼了,各种报错,原理就是iOS内部的处理器规定如此,这也是access的作用之一,我们照做就好啦!



34.这样的写法multiplier需要写具体值出来:

    NSLayoutConstraint* constraints2 = [NSLayoutConstraint constraintWithItem:_loginView
                                                                    attribute:NSLayoutAttributeWidth
                                                                    relatedBy:NSLayoutRelationEqual
                                                                       toItem:_loginView
                                                                    attribute:NSLayoutAttributeHeight
                                                                   multiplier:1.33 constant:0];
这个multiplier值一定要写具体值,例如4/3这种无效小数,编译器是不会帮你算的




35.

Java C++都有显式的抽象类:用关键字abstract来修饰

OC原生的却非常非常少,这里介绍一个非常常见的:手势类:

UIGestureRecognizer

这个类,是其他所有手势的共同父类,这个类不能够直接使用(因为没有意义,没有具体的手势处理),而是要用他们的子类



36.

遇到一些弹框(视图或者啥)的时候,如果没有动静,试着延迟一点点时间在弹出。(原因还在探寻ing)




37.

有些路径十分重要,例如 app文件下一个目录:

[[NSBundle mainBundle] pathForResource:@"Frameworks/XXXX.frameworks" ofType:nil]; //Frameworks问价下的动态库




38.

遇到一些找不到图片的神奇情况,工程有,也没有删掉等等,可以查看target的关系是否勾选





39.

非常坑爹的一次经历:

@property(nonatomic) CGAffineTransform transform;   // default is CGAffineTransformIdentity. animatable
iOS的这个缩放是往中间缩的,这样,无论我怎么调整Center都没有意义


并且修改了transform形变之后的:

            _flowMenu.transform = CGAffineTransformMakeScale(0.9, 1);
bounds的宽高都没有发生变化,但是frame就会发生变化


参考这个不错的文章:

http://blog.csdn.net/shancheng966/article/details/45290287


http://www.2cto.com/kf/201505/402421.html



40.互不牵涉的设置Frame是可以和 masonry 混用的

    _myTableView = ({
        TPKeyboardAvoidingTableView *tableView = [[TPKeyboardAvoidingTableView alloc] initWithFrame:self.view.bounds style:UITableViewStylePlain];
        [tableView registerNib:[UINib nibWithNibName:kCellIdentifier_Input_OnlyText_Cell bundle:[NSBundle mainBundle]] forCellReuseIdentifier:kCellIdentifier_Input_OnlyText_Cell];
        tableView.backgroundColor = kColorTableSectionBg;
        tableView.dataSource = self;
        tableView.delegate = self;
        tableView.separatorStyle = UITableViewCellSeparatorStyleNone;
        [self.view addSubview:tableView];
        [tableView mas_makeConstraints:^(MASConstraintMaker *make) {
            make.edges.equalTo(self.view);
        }];
        tableView;
    });




  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值