【AutoLayout案例04-游戏图片-按钮适配 Objective-C语言】

一、好,我们再看一个案例,

通知

刚才,这个案例,

通知

这么一个案例

通知

这个案例,是什么意思呢,

通知

这里给大家做一个3.5英寸、4.0英寸的屏幕适配,

因为我们这里图片,只有一个,就是4英寸的这么一个图片

什么意思呢,要求我们在3.5英寸的屏幕、和4英寸的屏幕的时候,都能正常显示这个图片,

那么,先给大家做个什么呢,没有屏幕适配的时候,是什么样子

再让大家看一下,这个屏幕适配以后,的这么一个样子,

通知

下面,我把这个思路,再给大家捋一下

因为我们只做3.5英寸、4英寸的适配吗,所以说,这里,

1)先把控制器改成4英寸,因为我们图片,没有更大的图片了

2)再一个,就是我们设置适配的一个大致思路,首先,设置图片框水平居中,垂直居中

3)设置图片距离左右是0,高度为568

4)修改距离左右为-16(或者把Constraint勾去掉,左右依然设置为0)

5)适配第一个按钮(设置按钮的大小,距离左边5,垂直居中对齐,然后修改按钮的垂直对齐时的constant值)。

6)依次适配每个按钮,两个按钮在同一条水平线上是要设置垂直居中

通知
通知

新建一个项目

通知

Name:007游戏首页图片屏幕适配

通知

看看

通知

先把控制器改成4英寸的

然后,在控制器里面放一个图片框

通知

让这个图片框填满整个屏幕

通知

是这个

通知

home_bg

好,拷过来

通知

把这个拷过来以后,接下来,我们看一下,在我们这个控制器里面

通知

在这个图片框中,设置一下图片,是那个home_bg

通知

在当前,4英寸的这个屏幕上,我们把它改成iPhone5S

通知

在4英寸屏幕下,因为这个图片本身,就是4英寸的大小

然后呢,在我们这个4英寸的屏幕下,是不是显示是刚刚好

这里显示,是不是刚刚好

然后,再把它改成我们的3.5英寸,给大家看一下

然后呢,我把这里的启动,改成我们的iPhone4S

通知

command + R

通知

看到啥了

是不是下面这边,短了不少

上面这边,是不是还是留着,长这么多啊

看到了吗

通知

下边短了不少,上边是不是留出来不少空白啊

你说,这样不行吗

这样不行吧

这样是不是,我们下边这些按钮,就不全了吧

按钮都不全了

我们希望的效果,是什么效果呢

我们希望这里在iPhone5S、iPhone4S、在4英寸、3.5英寸下面

运行效果是什么效果呢,我们希望是这样的效果

如果说,我们现在是4英寸的主机

通知

这时候,会把我们整个这个图片,都显示出来

通知

如果是3.5英寸的屏幕,这个时候,怎么显示呢,

只显示中间这部分,就够了,

通知

这个美工做图,其实它还是挺聪明的

通知

上边是不是一堆砖头

下边是不是一堆地板

这堆地板,是不是要和不要,没啥关系

你在4英寸的屏幕上,你把它整个儿都显示出来,是不是也挺好的

你到3.5英寸下的时候,你把这个上面砖头去几块儿,下边这个地板少几块儿,是不是只显示中间这部分,也可以吧

这也是一种思路吗,这也是一种思路

所以,我们就用这种思路,做一下这个屏幕适配

我们怎么做呢,

二、屏幕适配

1.知道我现在在3.5英寸下、4英寸下、屏幕适配的思路吧

1)在4英寸下,显示整个图片

2)在3.5英寸下,只显示中间那一部分,

把上面的砖头,去掉,不要它了

把下面的地板,也去掉,不要它了

通知

你看看,在3.5英寸的屏幕下,是如何显示的

通知

在3.5英寸下,砖头一堆,下面的按钮,是不是少了

这样你就不合适了吧

我把上边的砖头去了,把下边的地板去一部分,中间的按钮,正常显示

我要的是这样的效果

2.首先,选中这个图片框

通知

让这个图片框,是不是永远是居中显示啊

无论手机怎么做,是不是它永远是居中显示啊

好,我们选中这个图片框,设置它的约束

通知

让它,水平居中、垂直居中

通知

然后,把它勾上,点增加

通知

设完水平居中、垂直居中以后,这里把它更新一下frame

通知

这里的警告,给它解决一下

通知

点击Fix Misplacement

解决完毕以后

通知

解决完毕以后,看到啥了,是不是由于这个图片本身是比较大的,直接是不是放到很大很大了

这样做,肯定不是我们想要的吧

我们要的是这个图片,距离手机屏幕两边是0,这个图片,别超过手机宽度,

这个图片,距离手机两边,是不是都是0啊

那我们就设置一下,注意看

再选中这张图片

通知

然后,让它设置距离左右的距离

通知

先把这个勾去掉

距离左边、右边的竖线选上

通知

把这个下拉菜单打开,看一下,选上View

数字改成0

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mfbz.cn/a/93574.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

期权是什么?期权的优缺点是什么?

期权是一种合约,有看涨期权和看跌期权两种类型,也就是做多和做空两个方向,走势标的物对应大盘指数,这也是期权与其他金融工具的主要区别之一,可以用于套利,对冲股票和激进下跌的风险,下文介绍期…

LeetCode-56-合并区间

题目描述: 以数组 intervals 表示若干个区间的集合,其中单个区间为 intervals[i] [starti, endi] 。请你合并所有重叠的区间,并返回 一个不重叠的区间数组,该数组需恰好覆盖输入中的所有区间 。 可以使用 LinkedList,…

数字化、智能化的酒店固定资产管理系统

酒店固定资产管理系统是一种专门为酒店行业定制的管理软件,可以帮助酒店管理者全面、准确地管理固定资产。该系统具有以下实际功能和特点:  资产库存功能:通过扫描二维码或手动输入条形码,完成酒店固定资产的有效总结&#xff0…

家政服务小程序制作教程:从设计到开发的详细步骤

在当今的数字化时代,小程序已经成为了一种趋势,不仅提供了方便快捷的应用体验,也成为了各种行业进行营销和客户管理的有力工具。特别是对于家政行业,通过小程序的应用,可以更好地进行业务管理,提升服务质量…

VScode 编辑器报错: ‘HelloWorld‘ is declared but its value is never read.

.vue文件被标识红色波浪线;提示: HelloWorld is declared but its value is never read. 问题原因: 因为vue3已经不支持vetur插件。 1、在扩展里面进行搜索Vetur插件,进行禁用或卸载; 2、在 VScode扩展里面搜索并下载…

启动metastore服务报错

启动Metastore的时候报错: 简略的报错信息: MetaException(message:Error creating transactional connection factory)Caused by: MetaException(message:Error creating transactional connection factory)Caused by: javax.jdo.JDOFatalInternalExce…

Flink流批一体计算(18):PyFlink DataStream API之计算和Sink

目录 1. 在上节数据流上执行转换操作,或者使用 sink 将数据写入外部系统。 2. File Sink File Sink Format Types Row-encoded Formats Bulk-encoded Formats 桶分配 滚动策略 3. 如何输出结果 Print 集合数据到客户端,execute_and_collect…

Unity实现广告滚动播放、循环播放、鼠标切换的效果

效果: 场景结构: 特殊物体:panel下面用排列组件horizent layout group放置多个需要显示的面板,用mask遮罩好。 using System.Collections; using System.Collections.Generic; using DG.Tweening; using UnityEngine; using Unity…

手机盖板IR油墨透光率检测仪T03

手机盖板作为手机最外层玻璃面板,其加工一般有落料、倒边、抛光、镀膜、丝印等多道加工工序组成,其中任何一个工序出现差错,都有可能导致手机盖板产生缺陷,例如漏油、透光、IR孔不良、视窗划伤、油墨区划伤、內污、边花等&#xf…

淘宝免费爬虫数据 商品详情数据 商品销售额销量API

场景:一个宽敞明亮的办公室,一位公司高管坐在办公桌前。 高管(自言自语):淘宝,这个平台上商品真是琳琅满目,应该有不少销售数据吧。我该怎么利用这些数据呢? 突然,房间…

【vue+uniapp】切换本页面(点击导航按钮)就刷新接口

查阅资料:uni-app官网 点击导航中图标,就执行的方法(和methods同级): onTabItemTap(e) {this.getTaskTotal(); },

【PostGreSQL】PostGreSQL到Oracle的数据迁移

项目需要,有个数据需要导入,拿到手一开始以为是mysql,结果是个PostGreSQL的数据,于是装数据库,但这个也不懂呀,而且本系统用的Oracle,于是得解决迁移转换的问题。 总结下来两个思路。 1、Postg…

【Debug】解决RecursionError: maximum recursion depth exceeded in comparison报错

🚀Debug专栏 目录 🚀Debug专栏 ❓❓问题: 🔧🔧分析: 🎯🎯解决方案: ❓❓问题: 循环中报错RecursionError: maximum recursion depth exceeded in compari…

Git基本操作(Idea版)

第一次发布项目(本地->远程) 方式一 通过push的方式推送本地库到远程库(远程已创建好仓库) 这种方式需要提前创建好仓库。 右键点击项目,可以将当前分支的内容 push 到 GitHub 的远程仓库中。 注意&#xff1a…

arcgis+postgresql+postgis使用介绍

关于arcgis在postgresql创建地理数据库我分享一下自己的经历: 众所周知,arcgis如果在oracle中创建地理数据库,必须要使用ArcToolbox里面的地理数据库工具去创建,在里面发现它还可以创建sql_server, postgresql数据库类型&#xf…

1.神经网络基础知识

所有有用的计算机系统都有一个输入和一个输出, 并在输入和输出之间进行某种类型的计算。 神经网络也是如此。 当我们不能精确知道一些事情如何运作时, 我们可以尝试使用模型来估计其运作方式, 在模型中, 包括了我们可以调整的参数…

Java实现excel表数据的批量存储(结合easyexcel插件)

场景:加哥最近在做项目时,苦于系统自身并未提供数据批量导入的功能还不能自行添加上该功能,且自身不想手动一条一条将数据录入系统。随后,自己使用JDBC连接数据库、使用EasyExcel插件读取表格并将数据按照业务逻辑批量插入数据库完…

LeetCode-455-分发饼干-贪心算法

题目描述: 假设你是一位很棒的家长,想要给你的孩子们一些小饼干。但是,每个孩子最多只能给一块饼干。 对每个孩子 i,都有一个胃口值 g[i],这是能让孩子们满足胃口的饼干的最小尺寸;并且每块饼干 j&#xff…

AM62x GPMC并口如何实现“小数据-低时延,大数据-高带宽”—ARM+FPGA低成本通信方案

GPMC并口简介 GPMC(General Purpose Memory Controller)是TI处理器特有的通用存储器控制器接口,支持8/16bit数据位宽,支持128MB访问空间,最高时钟速率133MHz。GPMC是AM62x、AM64x、AM437x、AM335x、AM57x等处理器专用于与外部存储器设备的接口…

Hive/Spark 整库导出/导入脚本

博主历时三年精心创作的《大数据平台架构与原型实现:数据中台建设实战》一书现已由知名IT图书品牌电子工业出版社博文视点出版发行,点击《重磅推荐:建大数据平台太难了!给我发个工程原型吧!》了解图书详情,…