iOS 练习项目 Landmarks (四):添加 AutoLayout 约束

iOS在纯代码中使用AutoLayout添加约束 AutoLayout约束是苹果官方给定得约束信息。对于这个约束和UIView+AutoLayout.h延展的用法类似,不过加上了延展之后,不用写VFL语言 下面先看看以autolayout实现的效果为例我们讲解一下 下面开始上代码以用户名和密码为例,来说说, UITextField * userNameTextFiled = [[UITextField all... 阅读详情

iOS 练习项目 Landmarks (四):添加 AutoLayout 约束

新增 topLabel

与参考视频对比,返回标签的右边还要有一个显示景点名的标题,在详情页新增一个居中的 UILabel 来显示,命名为 topLabel。

图片视图圆形裁切+阴影

要使得图片展示为一个圆形,先设置一个正方形的 pictureView,再设置它的 layer.cornerRadius 为边长的一半,masksToBounds 是 layer 的属性,含义是子视图是否裁剪图层边界,设置为 YES 后,imageView 超出半径的部分就被裁减掉,这样就剩下一个圆形。

在圆形外设置一个 4px 的白色 border,就完成了边界的设置。

然后设置边界外的阴影,通过设置 layer.shadowOffset、layer.shadowRedius、layer.shadowPath、layer.shadowColor、layer.shadowOpacity 等属性,但是没有效果,因为 masksToBounds = true 会把设置的阴影裁剪掉。一种添加阴影的方法是在 pictureView 外套一层 shadowView,shadowView 的 frame 大小和 pictureView 相同,在 shadowView 上设置阴影效果,再让 picture View 作为 shadowView 的子视图。

    CGRect pictureFrame = CGRectMake(0, 0, 250, 250);
		// 创建并设置 pictureView
    self.pictureView = [[UIImageView alloc] initWithFrame:pictureFrame];
    [self.pictureView setImage:[self.place picture]];
    self.pictureView.layer.cornerRadius = 125.0;
    self.pictureView.layer.borderWidth = 4.0;
    self.pictureView.layer.borderColor = [UIColor whiteColor].CGColor;
    // self.pictureView.contentMode = UIViewContentModeScaleAspectFit;
    self.pictureView.translatesAutoresizingMaskIntoConstraints = NO;
    // 在 pictureView 上直接设置阴影,会因为 masksToBounds = true 而被裁减掉
    self.pictureView.layer.masksToBounds = YES;
    // 在 pictureView 外套一层 shadowView
    UIView *shadowView = [[UIView alloc] initWithFrame:self.pictureView.frame];
    shadowView.layer.shadowColor = [UIColor grayColor].CGColor;
    shadowView.layer.shadowOffset = CGSizeMake(0, 0);
    shadowView.layer.shadowOpacity = 1;
    shadowView.layer.shadowRadius = 9.0;
    shadowView.layer.cornerRadius = 9.0;
    [shadowView addSubview:self.pictureView];
		...
    [self.view addSubview:shadowView];
  • clipToBounds 是 view 的属性,含义是子视图只展示父视图边界内的内容,边界外会被裁减掉,默认为 NO。
  • masksToBounds 是 layer 的属性,含义是子视图是否裁剪图层边界,默认为 NO。

使用 AutoLayout 为详情页的组件添加约束

UIView 有一个属性:translatesAutoresizingMaskIntoConstraints,字面意思是把 autoresizingMask 转换为 Constraints,实际意思是把 frame ,bouds,center 方式布局的视图自动转化为约束形式,此时该视图上约束已经足够,不需要手动去添加别的约束。

  • 用代码创建的所有view , translatesAutoresizingMaskIntoConstraints 默认是 YES
  • 用 IB 创建的所有 view ,translatesAutoresizingMaskIntoConstraints 默认是 NO(autoresize 布局为 YES , autolayout 布局为 NO)。

如果我们要给视图添加自己创建的约束,会和上述约束冲突,所以使用 AutoLayout 前需要将视图的 translatesAutoresizingMaskIntoConstraints 属性设置为 NO。

接下来就是添加约束了:

		/* 添加约束 */
    // topLabel 的上边缘距离 view 的上边缘有 50px,且居中显示
    [NSLayoutConstraint activateConstraints:@[
        [self.topLabel.topAnchor constraintEqualToAnchor:self.view.topAnchor constant:50],
        [self.topLabel.centerXAnchor constraintEqualToAnchor:self.view.centerXAnchor], // 设置视图位于 X 轴居中
        [self.topLabel.heightAnchor constraintEqualToConstant:50] // 设置视图的高度为 50 点
    ]];
    // mapView 的上边缘位于 topLabel 的下边缘
    NSLayoutConstraint *mapTopAttachToTopButtom = [NSLayoutConstraint constraintWithItem:self.mapView attribute:NSLayoutAttributeTop relatedBy:NSLayoutRelationEqual toItem:self.topLabel attribute:NSLayoutAttributeBottom multiplier:1 constant:0];
    [self.view addConstraint:mapTopAttachToTopButtom];
    [NSLayoutConstraint activateConstraints:@[
        [self.mapView.centerXAnchor constraintEqualToAnchor:self.view.centerXAnchor], // 设置地图视图位于 X 轴居中
        // [self.mapView.topAnchor constraintEqualToAnchor:self.topLabel.bottomAnchor],
        // [self.mapView.leadingAnchor constraintEqualToAnchor:self.view.leadingAnchor],
        // [self.mapView.trailingAnchor constraintEqualToAnchor:self.view.trailingAnchor],
        [self.mapView.widthAnchor constraintEqualToAnchor:self.view.widthAnchor],
        [self.mapView.heightAnchor constraintEqualToConstant:290] // 设置地图视图的高度为 290px
    ]];
    // pictureView 的中心位于 mapView 的下边缘
    NSLayoutConstraint *pictureCenterYAttachToMapButtom = [NSLayoutConstraint constraintWithItem:self.pictureView attribute:NSLayoutAttributeCenterY relatedBy:NSLayoutRelationEqual toItem:self.mapView attribute:NSLayoutAttributeBottom multiplier:1 constant:0];
    [self.view addConstraint:pictureCenterYAttachToMapButtom];
    // pictureView 的宽高为 250px,且 X 轴居中
    [NSLayoutConstraint activateConstraints:@[
        [self.pictureView.centerXAnchor constraintEqualToAnchor:self.view.centerXAnchor], // 设置图片视图位于 X 轴居中
        // [self.pictureView.centerYAnchor constraintEqualToAnchor:self.view.centerYAnchor], // 设置图片视图位于 Y 轴居中
        [self.pictureView.widthAnchor constraintEqualToConstant:250], // 设置图片视图的宽度为 250px
        [self.pictureView.heightAnchor constraintEqualToConstant:250] // 设置图片视图的高度为 250px
    ]];
    // sightLabel 位于 pictureView 下方 30px 处,距离屏幕左边界 20px
    [NSLayoutConstraint activateConstraints:@[
        [self.sightLabel.topAnchor constraintEqualToAnchor:self.pictureView.bottomAnchor constant:30],
        [self.sightLabel.leadingAnchor constraintEqualToAnchor:self.view.leadingAnchor constant:20],
        [self.sightLabel.heightAnchor constraintEqualToConstant:80]
    ]];
    // starButton 位于 sightLabel 右侧,距离 4px
    [NSLayoutConstraint activateConstraints:@[
        [self.starButton.leadingAnchor constraintEqualToAnchor:self.sightLabel.trailingAnchor constant:4],
        [self.starButton.topAnchor constraintEqualToAnchor:self.sightLabel.topAnchor],
        [self.starButton.bottomAnchor constraintEqualToAnchor:self.sightLabel.bottomAnchor],
        [self.starButton.widthAnchor constraintEqualToConstant:25],
        [self.starButton.heightAnchor constraintEqualToConstant:25]
    ]];
    // scenicAreaLabel 位于 sightLabel 下方,距离 15px
    [NSLayoutConstraint activateConstraints:@[
        [self.scenicAreaLabel.topAnchor constraintEqualToAnchor:self.sightLabel.bottomAnchor constant:15],
        [self.scenicAreaLabel.leadingAnchor constraintEqualToAnchor:self.view.leadingAnchor constant:20],
        [self.scenicAreaLabel.heightAnchor constraintEqualToConstant:20]
    ]];
    // stateLabel 与 scenicAreaLabel 水平,其右边界距离屏幕右边界 20px
    [NSLayoutConstraint activateConstraints:@[
        [self.stateLabel.trailingAnchor constraintEqualToAnchor:self.view.trailingAnchor constant:-20],
        [self.stateLabel.topAnchor constraintEqualToAnchor:self.scenicAreaLabel.topAnchor],
        [self.stateLabel.bottomAnchor constraintEqualToAnchor:self.scenicAreaLabel.bottomAnchor],
        [self.stateLabel.heightAnchor constraintEqualToConstant:20]
    ]];

DetailViewControllerDelegate

详情页的 starButton 也要能修改数据源,所以在 DetailViewController 里声明一个 DetailViewControllerDelegate 协议。

@protocol DetailViewControllerDelegate <NSObject>

@optional

- (void)detailViewController:(DetailViewController *)detailViewController goBackWithFavorite:(BOOL)favorite atIndex:(NSInteger)index;

@end
  
@interface DetailViewController : UIViewController

@property (nonatomic, weak) id <DetailViewControllerDelegate> detailViewControllerDelegate;

...
  
@end

里面有一个可选方法,作用是将 favorite 从详情页传回主页,根据 index 修改数据源对应下标的 Place 对象的 favorite 属性。

在 ViewController 引入这个协议,在 tableView:didSelectRowAtIndexPath: 方法中,我们创建了 DetailViewController 对象,之后要设置代理,别忘了设置 index 属性:

// 设置代理,并且遵守 DetailViewControllerDelegate
detailViewController.detailViewControllerDelegate = self;
// 别忘了设置 index 属性
[detailViewController setIndex:indexPath.row];

并且实现协议的方法:

# pragma mark - DtailViewControllerDelegate Method

- (void)detailViewController:(DetailViewController *)detailViewController goBackWithFavorite:(BOOL)favorite atIndex:(NSInteger)index
{
    // 修改数据源对应的对象
    [self.places[index] setFavorite:favorite];
    // TableView 重新加载被修改了的那一行
    [placeTable reloadRowsAtIndexPaths:@[[NSIndexPath indexPathForRow:index inSection:0]] withRowAnimation:UITableViewRowAnimationNone];
    // [self.placeTable reloadRowsAtIndexPaths:@[[NSIndexPath indexPathForRow:index inSection:0]] withRowAnimation:UITableViewRowAnimationNone];
}

为详情页的starButton的点击事件添加一个目标-动作对,点击按钮,将starButton.selected保存到favorite,再通知代理执行协议方法:

- (void)starButtonClicked:(UIButton *)sender
{
    sender.selected = !sender.selected;
    // [place setFavorite:sender.selected];
    self.favorite = sender.selected;
    // 首先判断代理人是否存在并且是否遵守协议并且实现了协议方法
    if (_detailViewControllerDelegate && [_detailViewControllerDelegate respondsToSelector:@selector(detailViewController:goBackWithFavorite:atIndex:)])
    {
        // 如果满足判断条件,则让代理执行协议方法,此处让代理人执行协议方法,在代理人那个控制器中的协议方法会被执行
        [_detailViewControllerDelegate detailViewController:self goBackWithFavorite:self.favorite atIndex:self.index];
    }
}

为 PlaceCell 添加 AutoLayout 约束

之前提到过:在自己实现的PlaceCell中,目前只有imageView的上面空出了10px,其实下面也要空出距离,实现imageView和contentView的上下都有空位的效果。现在通过 AutoLayout 约束,使得 imageView 的上下分别距离 contentView 5px,就可以实现这个效果,再设置 textLabel 和 starButton 位于 contentView 的 Y 轴居中。

    // 添加约束
    [NSLayoutConstraint activateConstraints:@[
        [self.imageView.widthAnchor constraintEqualToConstant:50],
        [self.imageView.heightAnchor constraintEqualToConstant:50],
        [self.imageView.leadingAnchor constraintEqualToAnchor:self.contentView.leadingAnchor constant:20],
        [self.imageView.topAnchor constraintEqualToAnchor:self.contentView.topAnchor constant:5],
        [self.imageView.bottomAnchor constraintEqualToAnchor:self.contentView.bottomAnchor constant:-5],
        
        [self.textLabel.centerYAnchor constraintEqualToAnchor:self.contentView.centerYAnchor],
        [self.textLabel.leadingAnchor constraintEqualToAnchor:self.imageView.trailingAnchor constant:10],
        
        [self.starButton.centerYAnchor constraintEqualToAnchor:self.contentView.centerYAnchor], // 设置图片视图位于 Y 轴居中
        [self.starButton.trailingAnchor constraintEqualToAnchor:self.contentView.trailingAnchor constant:-10],
        [self.starButton.widthAnchor constraintEqualToConstant:25],
        [self.starButton.heightAnchor constraintEqualToConstant:25]
    ]];
iOS图像处理管线实战:从Core Image到Metal的高性能滤镜引擎构建 图像处理管线是现代移动修图应用的核心技术架构,其本质是将原始像素流经采集、计算与输出三大逻辑域的有序协同。理解YUV色彩空间转换原理、GPU内存零拷贝机制及Metal与Core Image的调度边界,是突破卡顿、发灰、边缘模糊等高频问题的关键。该技术具备显著工程价值:支持60fps实时预览、HEIF/ProRes多格式输出、语义分割驱动的区域化滤镜,并天然适配A15至SE二代等全系iOS设备。典型应用场景包括自研美颜SDK、HDR照片编辑器及专业级本地化修图App。本文聚焦于真实项目中可落地的管线分段设计、 阅读详情

相关推荐

iOS表格边框阴影效果实现指南

简介:在iOS开发中,为表格添加边框阴影可以增强界面的层次感和美观度。本指南将介绍如何通过设置CALayer属性(如和)来实现阴影效果,并提供两种方法:直接设置UITableView背景视图的阴影或为UITableViewCell的内容视图设置阴影。建议根据性能考虑动态添加或移除阴影,并根据需要调整阴影属性以获得最佳视觉效果。

weixin_42620563的博客 779

IOS 添加自动布局约束NSLayoutConstraint

自定义UICollectionViewCell,并添加自动布局约束。

路人甲 881

ad新版本学习笔记(基本包含一套流程)Altium Designer(ad20/ad21/ad22/ad23)

ad20-ad23学习笔记,逐渐补全

安和的博客 4万+

iOS开发点滴-添加阴影效果

UIBezierPath *shadowPath = [UIBezierPath bezierPathWithRect:imageView.bounds];                 imageView.layer.masksToBounds = NO;                 imageView.layer.shadowColor = [UIColor blackColor].

iOS技术分享与学习博客 3740

基于FPGA的PCIe核系列:FPGA root模式生成工程例子分析(1)

一、 PCIE系统架构 1.1 PCIE分层结构 PCIE结构 1.2 TLP包 四种TLP类型。 Memory (内存空间操作) IO (IO空间操作) Configuration (配置操作) Message (信息操作) 四种类型TLP,如果有需要响应,称为Non-Posted TLP,如果没有需要响应,称为Posted TLP。 TLP包类型 1.2.1 TLP结构 TLP数据格式 1.2.2 Header各个字段的含义 Header格式 ...

huangshanhu的博客 3432

TCP/IP协议栈之LwIP(三)---网际寻址与路由(IPv4 + ARP + IPv6)

一、网际寻址原理 当网络设备地址总数并不是很多的情况下,有了唯一地址(比如MAC地址)就可以定位相互通信的主体。然而,当地址总数越来越多时,如何高效地从中找出通信的目标地址将成为一个重要的问题。为此人们发现地址除了具有唯一性还需要具有层次性。MAC地址虽然具有唯一性,但没有层次性,也即当网络设备增加到一定程度,需要将网络分成多个数据链路时,MAC地址无法跨链路寻址,是真正负责最终通信的地址。要实现跨局域网的网际寻址,就要靠具有层次性的网络IP地址实现了。

流云 6819

iOS开发之添加阴影效果

今天做项目,用到了添加阴影效果,笔记一下 //添加阴影 view.layer.masksToBounds = NO; view.layer.shadowOpacity=1;///不透明度 view.layer.shadowColor = [UIColor colorWithHex:0x000000].CGColor;//阴影颜色 view.layer.shadowOffset = CGS...

天佑木枫 3575

保姆级教程:用ROS2 Humble和Nav2从零搭建一个能自主导航的机器人小车(含SLAM建图与避障)

本文提供了一份详细的保姆级教程,指导如何使用ROS2 Humble和Nav2从零搭建一个具备自主导航功能的机器人小车,包括SLAM建图与避障。教程涵盖了硬件组装、ROS2环境配置、URDF模型创建、SLAM建图实战、Nav2导航栈配置以及系统集成调试等关键步骤,适合机器人开发初学者和进阶开发者。

weixin_30329623的博客 488

IOS开发(83)之为形状增加阴影

1 前言 使用 CGContextSetShadow 过程,为绘制在图形环境上的形状应用阴影。 CGContextSetShadowWithColor 过程:这个过程接受的参数和 CGContextSetShadow 完全相同,不过加了一个 CGColorRef 类型的参数,用于设 置阴影的颜色。 2 代码实例 ZYViewControllerView.m -(void)dr

Developer_Zhang的专栏 2239

别再为PT100测温发愁了!手把手教你用ADS1247+STM32搞定高精度温度采集(附完整代码)

本文详细介绍了如何使用ADS1247与STM32构建高精度PT100测温系统,涵盖硬件设计、SPI配置、温度计算及调试技巧。通过24位ADC和内置PGA,实现0.1℃级精度,适用于工业自动化和医疗设备。附完整代码和常见问题解决方案,助你快速掌握高精度温度采集技术。

weixin_42524703的博客 343

【已解决】如何在服务器中下载huggingface模型,解决huggingface无法连接

在服务器上使用huggingface模型时,如果直接指定模型名称,用AutoTokenizer.from_pretrained(“model_name”),可能会由于网络原因会报错 Failed to connect to huggingface.co port 443 after 75018 ms: Operation time out因此我们需要下载模型到服务器上,得到模型本地的路径model_dir,再通过AutoTokenizer.from_pretrained(model_dir)方式来使用。

a61022706的博客 4万+

【iOS】UITableView性能优化

最近基本将我的第二个项目完结,之后会记录一些源码的学习以及优化项目的一些方法,而在iOS中是最为常用的一种控件,今天我们就从性能优化开始讲起UITableView的性能优化涉及到了许多层面,下到底层的Layer属性,上到第三方库SDWebImage与RunLoop,这些东西的实现都十分巧妙,还有很长一段路需要学习这里笔者写一下Tableview 性能优化方法总览实现Tableview的懒加载以及cell的复用。

weixin_72437555的博客 3064

《QGIS快速入门与应用基础》239:指北针样式选择(预设/自定义)

系统解析指北针设计的核心规范与实操方法。文章首先强调行业规范红线,包括强制要求N字标注、箭头辨识度等关键要素,通过正误示例对比强化合规意识。其次详细讲解QGIS内置预设样式的分类应用,提供极简箭头、标准三角箭头等4类样式的选型对照表,并配图说明适用场景。最后介绍从基础微调到SVG导入的进阶自定义方法,帮助用户实现从合规到专业的样式设计。全文贯穿"合规优先、可读为本、美观为辅"原则,配有详细操作截图与规范对照表,适合从GIS新手到专业制图人员参考。

LuckyHanMo的博客 527

iOS-使用通过 UIBezierPath 设置View阴影

使用 shadowPath 添加阴影,可以精准匹配View的圆角形状,减少性能消耗。

qq_43441647的博客 508

Mac 下 OpenClaw 安装全记录:从零到一的保姆级图文教程

本文主要介绍了Mac 下 OpenClaw 安装全记录:从零到一的保姆级图文教程,希望能对学习使用OpenClaw 的同学们有所帮助。 文章目录 1. 背景 2. 安装教程 2.1 安装OpenClaw 2.2 配置模型 2.3 对话 3. 后续使用步骤 4. 关闭程序

weixin_43178406的博客 11万+

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

ios自动布局使用代码添加约束

本系列的第一篇文章介绍了自动布局的基本原理,第二篇文章通过一个简单的例子演示了如何使用Xcode的Interface Builder(简称IB)以可视化方式添加约束。本篇为该系列的第三篇文章,主要介绍如何通过代码来添加布局约束。 其实,我个人认为本篇才应该是系列的第二篇,因为通过代码构建自动布局约束是最基础的,也是最灵活的方式。而IB只不过是把复杂的过程以直观简单的方式呈现出来,而且并非所有的情

不二法门 2059

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

iOS:原生代码添加约束

Width:对视图宽度的约束 Height:对视图高度的约束 Horizontal Spacing:对视图间水平距离的约束 Vertical Spacing:对视图间垂直距离的约束 Leading Space to Superview:与父视图左边界的约束 Trailing Space to Superview:与父视图右边界的约束 Top Space to Superview:与父视图上边界的约束 Bottom Space to Superview:与父视图下边界的约束 Widths Equally:视图

韩博主 1710

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

iOS用代码添加约束

用代码给view添加约束,跟在xib添加约束一样,只不过约束需要通过代码创建而已,需要注意约束是添加到哪个视图上,填加错了程序就会崩溃。Swift: NSLayoutConstraint.init(item: subView, attribute: .width, relatedBy: .equal, toItem: superView, attribute: .width, multiplie

冰凉的枷锁的博客 1511

iOS笔记UI--使用storyboard添加约束

申明:此为本人学习笔记,若有纰漏错误之处的可留言共同探讨 可视化的搭建UI效率是非常高的,所以官方苹果也是非常推荐的。那么我们来学一学如何利用系统自带的故事版(storyboard)来搭建UI。可视化搭建UI除了可以使用storyboard也可以使用xib。其实使用它们也是非常容易的,只需要在xcode的右下角写处控件的名字,然后拖拽到故事板上即可,如图 拖拽完之后。就是根据需求去设置

csdn_hhg的博客 9456

iPhone之为UIView设置阴影(CALayer的shadowColor,shadowOffset,shadowOpacity,shadowRadius,shadowPath属性)...

效果图: 以下代码实现: 第一个图片的代码 //加阴影--任海丽编辑 _imageView.layer.shadowColor = [UIColor blackColor].CGColor;//shadowColor阴影颜色 _imageView.layer.shadowOffset = CGSizeMake(4,4);//shadowOffset阴影偏移,x向右偏移...

白雾霾 523

iOS-AutoLayout还不会,你就累到死

花时间写了个Demo,包含比较全面从UIView,UILabel,UIImageView的自适应到UITextView,UITableView,UICollectionView,UIScrollView都有,可以下载学习一下。Demo地址 注意不配合demo也许会不知所云! iOS8之后 使用AutoLayout是非常方便的,更何况iOS11都要发布了,不会还想着支持iOS7吧!(iOS7

让坚持成为习惯 6526

iOS开发,View添加阴影(Xib和代码两种方式)

iOS开发,View添加阴影(Xib和代码两种方式) 废话不多说.直接上代码 第一种方式: XIB layer.cornerRadius Number layer.masksToBounds Boolean layer.shadowOffset Size layer.shadowUIColor Color layer.shadowOpacity Number layer.shadowRadius Number 第二种方式: 代码 view.layer.cornerRadius =

weixin_42325704的博客 804

iOS开发 - 设置阴影之你不知道的秘密

给图层设置阴影大家都不陌生,我想想大家会怎么设置? UIView *view = [[UIView alloc]initWithFrame:CGRectMake(100, 100, 100, 100)]; view.backgroundColor = [UIColor redColor]; view.layer.shadowColor = [UIColor blackColor].C

CodingFire的博客 5228

ios快速添加约束(storyboard中)

这篇文章是告诉新手如何快速的在storyboard中添加约束: 我们在storyboard中有一些按钮,可以添加约束。 但是最直观、最方便、最快捷的添加约束的方法,在我看来就是使用ctl键: 选中控件,按下ctl,将其拖动到约束的另外一个对象-可能是自己,可能是父视图,可能是兄弟视图. 。弹出的框里我们就可以选择我们需要添加的约束,1次添加1个,不多也不少。 快来试试吧,拥抱autola

openglnewbee的博客 1万+

iOS代码添加视图约束

项目要做这样一个效果的启动页。 考虑到版本号是会不断变更的,因此采用动画效果启动页,让版本号动态加载iOS启动页动画效果 - 简书 考虑到屏幕适配问题,因此采用代码对视图添加约束。在添加约束的过程中遇到了一些问题,在此做一下记录和总结. 代码实现autolayout的注意点: 1.要先禁止autoresizing功能,设置view 的translatesAutoresizingMaskIn...

weixin_33788244的博客 465
上一篇: iOS 练习项目 Landmarks (三):详情页设计
下一篇: iOS 练习项目 Landmarks (五):UISwitch 切换展示数据
UestcXiye
博客等级 码龄8年 9027粉丝 1306原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

UestcXiye

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值