iPhone布局

来源:互联网 发布:软件导刊版面费 编辑:程序博客网 时间:2024/04/28 02:24

1.获取屏幕高宽?

CGRect rect = [[ UIScreen mainScreen] bounds];//返回的是带状态栏的rect.

CGRect rect =[[ UIScreen mainScreen] applicationFrame];//返回的是不包含状态栏的rect;

CGSize size = rect.size;

CGFloat width = size.width;

CGFloat heigh = size.height;

要记住CGRect 有四个属性,和CGSize只有两个。

2.获取view的高宽?以及位置?

CGRect rect = self.view.frame;

CGSize size = rect.size;

CGPoint origin = rect.origin(原点);

CGFloat x= origin.x;

CGFloat y = origin.y;

3.自定义view ,手动加载?


UIView* myView =[[ UIView alloc]initWithFrame:CGRectMake(0.0,0.0,200.0,400.0)];

需要特别说明的是这里的rect是相对于父视图的位置,以及大小。

如果一个view 需要加载另一个 xib 文件,首先是加载nib(如果有xib文件的话,也可以是自定义的初始化方法。

1.无xib

 AMRatingControl *simpleRatingControl = [[AMRatingControlalloc]initWithLocation:

    CGPointMake(0,0)andMaxRating:5];

这是一个自定义的 ratingControl ,它本质上还是一个view 。这是没有xib 文件的。在代码里有设置了自定义控件的宽以及高。

而传入了它相对父视图的原点,当然这里也可以写在里面。 如果写在里面,也就是说他的frame是已经确定好了。

如果frame 是确定好了的话就不需要再设置约束了。

2.有xib

在.h文件中需要声明公开的类方法。在.m文件中实现。

+ (instancetype)freeTelGroupHeadView {

    return [[[NSBundlemainBundle]loadNibNamed:@"FreeTelGroupHeadView"owner:niloptions:nil]lastObject];

}




首先来看看如何用代码初始化一个view。

  NSLayoutConstraint *layoutX = [NSLayoutConstraintconstraintWithItem:headerView1attribute:NSLayoutAttributeCenterXrelatedBy:NSLayoutRelationEqualtoItem:headerViewattribute:NSLayoutAttributeCenterXmultiplier:1.0constant:0];

    

    NSLayoutConstraint *layoutY = [NSLayoutConstraintconstraintWithItem:headerView1attribute:NSLayoutAttributeCenterYrelatedBy:NSLayoutRelationEqualtoItem:headerViewattribute:NSLayoutAttributeCenterYmultiplier:1.0constant:0];

    

    NSLayoutConstraint *layoutH = [NSLayoutConstraintconstraintWithItem:headerView1attribute:NSLayoutAttributeHeightrelatedBy:NSLayoutRelationEqualtoItem:headerViewattribute:NSLayoutAttributeHeightmultiplier:1.0constant:0];

    

    NSLayoutConstraint *layoutW = [NSLayoutConstraintconstraintWithItem:headerView1attribute:NSLayoutAttributeWidthrelatedBy:NSLayoutRelationEqualtoItem:headerViewattribute:NSLayoutAttributeWidthmultiplier:1.0constant:0];



设置四个约束?

 NSArray *array =@[layoutH,layoutW,layoutX,layoutY];

    [headerViewaddConstraints:array];


4.在这个自定义的星级等级评价当中,长宽已经确定,但是还有x,y 位置不确定,需要输入相对应view的坐标点,那换一个角度想,也可以加两个约束咯。

那可以在xib中定义个view,这样就可以放在view里面,x=0,y= 0,那再将view与其他的控件设置约束。

那如果就把这个自定义星级等级评价当做view,那需要设置约束,需要添加到view,当中。这样就需要用代码设置约束了。(可以尝试一下)。



0 0
原创粉丝点击