日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

IOS开发之——屏幕适配-AutoLayout代码实现(03)

發(fā)布時(shí)間:2023/12/10 编程问答 38 豆豆
生活随笔 收集整理的這篇文章主要介紹了 IOS开发之——屏幕适配-AutoLayout代码实现(03) 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

一 概述

  • 用代碼實(shí)現(xiàn)AutoLayout的步驟過程
  • AutoLayout約束規(guī)則
  • AutoLayout約束示例

二 用代碼實(shí)現(xiàn)AutoLayout的過程

2.1 實(shí)現(xiàn)AutoLayout的過程

  • 通過代碼創(chuàng)建要進(jìn)行AutoLayout約束的View
  • View.translatesAutoresizingMaskIntoConstraints=NO;
  • 根據(jù)邏輯添加約束方法:constraintWithItem:(id)view1 attribute:(NSLayoutAttribute)attr1…
  • 添加約束對(duì)象到相應(yīng)的view上

2.2 方法說明

創(chuàng)建約束對(duì)象的常用方法

+(id)constraintWithItem:(id)view1 attribute:(NSLayoutAttribute)attr1 relatedBy:(NSLayoutRelation)relation toItem:(id)view2 attribute:(NSLayoutAttribute)attr2 multiplier:(CGFloat)multiplier constant:(CGFloat)c;

說明:

  • view1 :要約束的控件
  • attr1 :約束的類型(做怎樣的約束)
  • relation :與參照控件之間的關(guān)系
  • view2 :參照的控件
  • attr2 :約束的類型(做怎樣的約束)
  • multiplier :乘數(shù)
  • c :常量

自動(dòng)布局有個(gè)核心公式:obj1.property1 =(obj2.property2 * multiplier)+ constant value

添加約束對(duì)象到相應(yīng)的view上

- (void)addConstraint:(NSLayoutConstraint *)constraint; - (void)addConstraints:(NSArray *)constraints;

注意點(diǎn)

  • 要先禁止autoresizing功能,設(shè)置view的下面屬性為NO view.translatesAutoresizingMaskIntoConstraints = NO;
  • 添加約束之前,一定要保證相關(guān)控件都已經(jīng)在各自的父控件上
  • 不用再給view設(shè)置frame

三 AutoLayout約束規(guī)則

在創(chuàng)建約束之后,需要將其添加到作用的view上

在添加時(shí)要注意目標(biāo)view需要遵循以下規(guī)則:

3.1 對(duì)于兩個(gè)同層級(jí)view之間的約束關(guān)系,添加到它們的父view上

3.2 對(duì)于兩個(gè)不同層級(jí)view之間的約束關(guān)系,添加到他們最近的共同父view上

3.3 對(duì)于有層次關(guān)系的兩個(gè)view之間的約束關(guān)系,添加到層次較高的父view上

四 AutoLayout約束示例

4.1 代碼

#import "ViewController.h"@interface ViewController ()@end@implementation ViewController- (void)viewDidLoad {[super viewDidLoad];//1-添加兩個(gè)控件到父空間上//1.1-藍(lán)色ViewUIView *blueView=[[UIView alloc]init];blueView.backgroundColor=[UIColor blueColor];[self.view addSubview:blueView];blueView.translatesAutoresizingMaskIntoConstraints=NO;//1.2-紅色ViewUIView *redView=[[UIView alloc]init];redView.backgroundColor=[UIColor redColor];[self.view addSubview:redView];redView.translatesAutoresizingMaskIntoConstraints=NO;//2-添加約束/** @Item:==first item,需要約束的條件* @attribute:需要設(shè)置的約束* @relatedBy==relation,等于* @toItem=second item,被參考的控件* @attribute:需要設(shè)置的約束* @multiplier:乘以* @constant:加上*///2.1 添加藍(lán)色View距離父控件左邊距固定為20--藍(lán)色View的左邊等于父控件的左邊*1.0+20NSLayoutConstraint *blueViewLeft= [NSLayoutConstraint constraintWithItem:blueView attribute:NSLayoutAttributeLeft relatedBy:NSLayoutRelationEqual toItem:self.view attribute:NSLayoutAttributeLeft multiplier:1.0 constant:20];[self.view addConstraint:blueViewLeft];//2.2 添加藍(lán)色View距離父控件右邊距固定為20,--藍(lán)色View的右邊等于父控件的右邊*1.0-20NSLayoutConstraint *blueViewRight= [NSLayoutConstraint constraintWithItem:blueView attribute:NSLayoutAttributeRight relatedBy:NSLayoutRelationEqual toItem:self.view attribute:NSLayoutAttributeRight multiplier:1.0 constant:-20];[self.view addConstraint:blueViewRight];//2.3 添加藍(lán)色View距離父控件上邊距固定為20,--藍(lán)色View的上邊等于父控件的上邊*1.0+20NSLayoutConstraint *blueViewTop= [NSLayoutConstraint constraintWithItem:blueView attribute:NSLayoutAttributeTop relatedBy:NSLayoutRelationEqual toItem:self.view attribute:NSLayoutAttributeTop multiplier:1.0 constant:20];[self.view addConstraint:blueViewTop];//2.4 添加藍(lán)色View高度為50,--藍(lán)色View的高度等于50NSLayoutConstraint *blueViewHeight= [NSLayoutConstraint constraintWithItem:blueView attribute:NSLayoutAttributeHeight relatedBy:NSLayoutRelationEqual toItem:nil attribute:NSLayoutAttributeHeight multiplier:1.0 constant:50];[self.view addConstraint:blueViewHeight];//3-設(shè)置紅色View//3.1 紅色View的高度和藍(lán)色View的高度一樣 高度--紅色View的高度等于紅色View的高度NSLayoutConstraint *redViewHeight= [NSLayoutConstraint constraintWithItem:redView attribute:NSLayoutAttributeHeight relatedBy:NSLayoutRelationEqual toItem:blueView attribute:NSLayoutAttributeHeight multiplier:1.0 constant:0];[self.view addConstraint:redViewHeight];//3.2 紅色的右邊和藍(lán)色的右邊對(duì)齊 x-紅色View的右邊等于紅色View的右邊NSLayoutConstraint *redViewRight= [NSLayoutConstraint constraintWithItem:redView attribute:NSLayoutAttributeRight relatedBy:NSLayoutRelationEqual toItem:blueView attribute:NSLayoutAttributeRight multiplier:1.0 constant:0];[self.view addConstraint:redViewRight];//3.3 紅色的頂部和藍(lán)色的地步距離固定 y-紅色View的頂部等于紅色View的底部+20NSLayoutConstraint *redViewTop= [NSLayoutConstraint constraintWithItem:redView attribute:NSLayoutAttributeTop relatedBy:NSLayoutRelationEqual toItem:blueView attribute:NSLayoutAttributeBottom multiplier:1.0 constant:20];[self.view addConstraint:redViewTop];//3.4 紅色的寬度等于藍(lán)色寬度的一般 寬度-紅色View的寬度等于紅色View的寬度*0.5NSLayoutConstraint *redViewWidth= [NSLayoutConstraint constraintWithItem:redView attribute:NSLayoutAttributeWidth relatedBy:NSLayoutRelationEqual toItem:blueView attribute:NSLayoutAttributeWidth multiplier:0.5 constant:0];[self.view addConstraint:redViewWidth];} @end

4.2 效果圖

豎屏橫屏

總結(jié)

以上是生活随笔為你收集整理的IOS开发之——屏幕适配-AutoLayout代码实现(03)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。