绝对布局和相对布局

本文介绍如何在iOS应用中使用相对布局,通过设置约束条件来调整视图大小,并提供了具体的实现代码示例。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

注意: 绝对布局和相对布局是不共存的   

也就是说

LayoutConstraint  和frame  不共存  frame就不多说了


相对布局主要的就是建立约束条件

- (IBAction)sliderChange:(id)sender

{

    //为了避免冲突移除myView的水平和垂直约束,注意是从主视图上移除,因为约束是加载我们的主视图上,即相对于我们的主视图

    [self.view removeConstraint:self.widthC];

    [self.view removeConstraint:self.heightC];

     

    //获取slider的值

    double sliderValue = self.mySlider.value;

     

    //由slider的值重设我们的约束值,H代表水平约束, V代表垂直约束

    NSString *widthValue = [NSString stringWithFormat:@"H:[_myView(%lf)]", sliderValue];

    NSString *heightValue = [NSString stringWithFormat:@"V:[_myView(%lf)]", sliderValue];

     

    //新建约束

    NSArray *widthConstraint = [NSLayoutConstraint constraintsWithVisualFormat:widthValue options:0 metrics:nil views:NSDictionaryOfVariableBindings(_myView)];

    //给水平约束重新赋值

    self.widthC = widthConstraint[0];

     

    //给垂直约束重新赋值

    NSArray * heightConstraint = [NSLayoutConstraint constraintsWithVisualFormat:heightValue options:0 metrics:nil views:NSDictionaryOfVariableBindings(_myView)];

    self.heightC = heightConstraint[0];

     

    //往主视图上添加新的约束

    [self.view addConstraint:self.widthC];

    [self.view addConstraint:self.heightC];

}


<think>好的,我需要解释HTML中的绝对布局相对布局。首先,我得回忆这两个概念的基本定义区别。绝对布局是相对于最近的已定位祖先元素定位,如果没有,就相对于文档的body。而相对布局是相对于元素自身原来的位置进行偏移。用户可能想了解它们的具体用法区别。 接下来,我应该分步骤说明。先讲相对定位,再讲绝对定位。每个部分需要包含定义、特点、使用场景以及示例代码。这样结构清晰,便于用户理解。 要注意用户可能对CSS的position属性不太熟悉,所以得先提到position属性的relativeabsolute值。同时,要指出相对定位元素仍然占据文档流中的原位置,而绝对定位脱离文档流,可能覆盖其他元素。 示例代码部分,使用简单的HTMLCSS代码,展示两种布局的效果。比如,相对定位的元素偏移后,周围元素不受影响;绝对定位的元素可能覆盖其他内容。 还要比较两者的区别,比如参考系、文档流的影响、使用场景等。用户可能想知道何时选择哪种布局,所以需要给出建议,比如相对布局适合微调元素位置,绝对布局适合创建浮动元素或弹出层。 最后,检查是否有遗漏点,比如是否需要提到fixed或sticky定位?不过用户只问了绝对相对,所以可以省略。确保语言通俗易懂,避免专业术语过多,必要时用比喻帮助理解。</think>在HTML/CSS中,绝对布局相对布局是两种常见的定位方式,主要通过`position`属性实现。以下是逐步说明: ### 一、相对布局(Relative Positioning) 1. **定义** 通过`position: relative`实现,元素**相对于自身原有位置**进行偏移。 2. **特点** - 偏移后**原位置仍被保留**(不影响其他元素布局) - 需配合`top`, `left`, `right`, `bottom`属性使用 - 常用于微调元素位置或作为绝对定位的参考容器 3. **示例** ```html <div style="position: relative; left: 20px; top: 10px;"> 这个元素向右移动20px,向下移动10px </div> ``` ### 二、绝对布局(Absolute Positioning) 1. **定义** 通过`position: absolute`实现,元素**相对于最近的定位祖先元素**(即设置了`position: relative/absolute/fixed`的父元素)进行定位。 2. **特点** - **脱离文档流**(原位置不再保留) - 如果没有定位祖先,则相对于`<body>`定位 - 适合创建浮动元素、弹出层等 3. **示例** ```html <div style="position: relative; width: 300px; height: 200px;"> <div style="position: absolute; right: 0; bottom: 0;"> 这个元素位于父容器的右下角 </div> </div> ``` ### 三、关键区别对比 | 特性 | 相对布局 | 绝对布局 | |---------------------|----------------------------------|----------------------------------| | 参考系 | 自身原始位置 | 最近的定位祖先元素 | | 文档流占用 | ✔️ 保留原位置 | ❌ 完全脱离 | | 常见用途 | 微调位置、作为定位参考容器 | 浮动元素、模态框、精确位置控制 | ### 四、使用建议 1. 优先使用**相对布局**进行细微调整 2. 需要精确控制位置时,配合父容器的`position: relative`使用**绝对布局** 3. 避免滥用绝对布局,可能导致元素重叠或响应式布局问题 通过合理组合两种定位方式,可以实现复杂的页面布局效果。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值