iOS程序员使用xib设置ScrollView的contentSize

废话少说,直接上代码,以及效果图。

1:使用 Safe Area,方便适配 iphoneX 的刘海。


iOS程序员使用xib设置ScrollView的contentSize_第1张图片
勾选使用Safe Area.png

2:我们需要设置 navigationBar 的 背景图片为白色的图片,这样 UIScrollView 就会从导航条下开始布局了。我们用 whiteColor 来画一个背景图,需要给 UIImage 添加一个 category,category 的 h 文件暴露一个 imageWithColor: 方法。

@interface UIImage (Extension)
/*
 获取纯色图片
 */
+(UIImage *)imageWithColor:(UIColor*)color;

@end
@implementation UIImage (Extension)

+(UIImage *)imageWithColor:(UIColor*)color{
    CGRect rect=CGRectMake(0.0f, 0.0f, 1.0f, 1.0f);
    
    UIGraphicsBeginImageContext(rect.size);
    
    CGContextRef context = UIGraphicsGetCurrentContext();
    CGContextSetFillColorWithColor(context, [color CGColor]);
    CGContextFillRect(context, rect);
    UIImage *theImage = UIGraphicsGetImageFromCurrentImageContext();
    
    UIGraphicsEndImageContext();
    
    return theImage;
}

@end
@implementation SecondViewController

-(void)viewDidLoad {
    [super viewDidLoad];
    
    [self.navigationController.navigationBar setBackgroundImage:[UIImage imageWithColor:[UIColor whiteColor]] forBarMetrics:UIBarMetricsDefault];
}

@end

3: UIScrollView 设置为 light gray color , 加个宽为 5 的蓝色边框;在 UIScrollView 里加上背景颜色为红色的 View。


iOS程序员使用xib设置ScrollView的contentSize_第2张图片
scr.png

4:在已经设置好 UIScrollView 的约束前提下来给红色 View 加约束。View 距左右各20,距上10,高度固定110,这样 View 在 UIScrollView 里的 frame 就确定了。这几个约束的优先级要设置为最高,必须满足的硬性要求。


iOS程序员使用xib设置ScrollView的contentSize_第3张图片
屏幕快照 2019-01-26 下午7.47.45.png

5:View 的 frame 虽已确定,但 UIScrollView 的 contentSize 还没确定。UIScrollView 的 contentSize 是根据其子视图的约束来计算得出的,那么就需要再给 View 添加几个优先级低的约束来控制 UIScrollView 的 contentSize(约束的默认优先级为1000代表最高)。加一个横向不允许滑动的约束,让 View 的 width 比 UISrollView 的 width 小40。加一个纵向允许上滑10的约束,View 是从导航条下开始布局的,所以让 View 的底部距 UIScrollView 的底部443 (617-64-10-110+10)。

6:最终效果:可以以往上滑动10,没法放视频,只能放一张图了。


iOS程序员使用xib设置ScrollView的contentSize_第4张图片
Simulator Screen Shot - iPhone 6s - 2019-01-26 at 21.49.50.png

你可能感兴趣的:(iOS程序员使用xib设置ScrollView的contentSize)