当前位置: 首页 > news >正文

【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

相关文章:

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

一、好,我们再看一个案例, 刚才,这个案例, 这么一个案例 这个案例,是什么意思呢, 这里给大家做一个3.5英寸、4.0英寸的屏幕适配, 因为我们这里图片,只有一个,就是4英寸的这么一个图片 什么意思呢,要求我们在3.5英寸的屏幕、和4英寸的屏幕的时候,都能正常显示这个图…...

Spring Boot业务系统如何实现海量数据高效实时搜索

1.概述 我们都知道随着业务系统的发展和使用,数据库存储的业务数据量会越来越大,逐渐成为了业务系统的瓶颈。在阿里巴巴开发手册中也建议:单表行数超过500万行或者单表容量超过2GB才推荐进行分库分表,如果预计三年后数据量根本达…...

面向对象的设计原则

设计模式 Python 设计模式:对软件设计中普遍存在(反复出现)的各种问题,所提出的解决方案。每一个设计模式系统地命名、解释和评价了面向对象系统中一个重要的和重复出现的设计 面向对象 三大特性:封装、继承、多态 …...

前端需要理解的工程化知识

1 Git 1.1 Git 常见工作流程 Git 有4个区域:工作区(workspace)、index(暂存区)、repository(本地仓库)和remote(远程仓库),而工作区就是指对文件发生更改的地方&#xff…...

【Terraform学习】使用 Terraform创建DynamoDB添加项目(Terraform-AWS最佳实战学习)

本站以分享各种运维经验和运维所需要的技能为主 《python》:python零基础入门学习 《shell》:shell学习 《terraform》持续更新中:terraform_Aws学习零基础入门到最佳实战 《k8》暂未更新 《docker学习》暂未更新 《ceph学习》ceph日常问题解…...

基于单片机教室人数实时检测系统

一、系统方案 主程序中main函数主要是引脚的初始化,给单片机引脚初始化,初始化LCD1602,初始化红外对管,通过对LCD1602赋值,采集进入教室的人数,显示在LCD1602上面进出人数我们采用按键的形式,检…...

alibabacloud的简单使用,nacos配置中心+服务中心。作者直接给自己写的源码

文章目录 依赖关键主要的程序启动文件配置文件bootstrap.yml依赖文件nacos配置中心上的文件截图 启动成功截图参考文档 依赖关键 SpringBoot版本和com.alibaba.cloud版本需要对应,不然会程序会启动失败作者使用的版本 SpringBoot: 2.1.6.RELEASE alibabacloud: 2.…...

Python爬虫:一个爬取豆瓣电影人像的小案例

从谷歌浏览器的开发工具进入 选择图片右键点击检查 ![在这里插入图片描述](https://img-blog.csdnimg.cn/1b38c2a942c441fb8cb545a28bb35015.png 翻页之后发现网址变化的只有start数值,每次变化值为30 Python代码 import requests from bs4 import BeautifulSou…...

STM32CubeMX配置STM32G0 Standby模式停止IWDG(HAL库开发)

1.打开STM32CubeMX选择好对应的芯片,打开IWDG 2.打开串口1进行调试 3.配置好时钟 4.写好项目名称,选好开发环境,最后获取代码。 5.打开工程,点击魔术棒,勾选Use Micro LIB 6.修改main.c #include "main.h"…...

39.RESTful案例

RESTful案例 准备环境 Employee.java public class Employee {private Integer id;private String lastName;private String email;//1 male, 0 femaleprivate Integer gender; } //省略get、set和构造方法EmployeeDao.java package com.atguigu.SpringMVC.dao;import com.…...

Power Pivot 实现数据建模

一、简介 Excel中的透视表适合小规模数据;如果想在稍微大一些的数据中进行高性能透视表分析,就要使用Power Pivot;再大一些数据,可能就需要大数据分析服务来进行分析。 Power Pivot,可以让没有技术背景的企业业务人员…...

Ansible自动化运维之playbooks剧本

文章目录 一.playbooks介绍1.playbooks简述2.playbooks剧本格式3.playbooks组成部分4.运行playbooks及检测文件配置 二.模块实战实例1.playbooks模块实战实例2.vars模块实战实例3.指定远程主机sudo切换用户4.when模块实战实例5.with_items迭代模块实战实例6.Templates 模块实战…...

Docker - Docker安装MySql并启动

因为项目需要连接数据库,但是远程服务器上的mysql我不知道账户和密码,这个时候便是docker发挥作用的关键时刻了! 目录 docker安装安装gcc卸载老docker(如有)安装软件包设置镜像仓库更新yum软件包索引安装docker启动doc…...

SQL Server 2019导入txt数据

1、选择导入数据 2、选择Flat file Source 选择文件,如果第一行不是列名,就不勾选。 3、下一步 可以看看数据是否是对的 4、下一步 选择SQL server Native Client 11,数据库选择导入进的库 输入连接数据库的名字和要导入的数据库 下一…...

科研 | Zotero导入无PDF的参考文献、书籍

最近在用Zotero在Word中插入参考文献的时候发现,有些没在网上找到对应的PDF版本,但也不是必须要PDF版本的参考文献或者参考书籍,如何才能不影响正常的文献排版 主要是先在网上找到对应文献,书籍,网页等的ISBN&#xf…...

【Docker】docker入门之dockerfile编写

文章目录 前言一、docker是什么?docker介绍docker指令 二、docker有什么用?三、docker怎么用?FROMMAINTAINERRUNENVWORKDIRCOPY、ADDUSEREXPOSE实例 四、docker注意事项docker容器中使用某些宿主机设备时需要额外的权限docker容器中文件内容中…...

javaee之黑马乐优商城1

问题1:整体的项目架构与技术选型 技术选型 开发环境 域名测试 如何把项目起来,以及每一个目录结构大概是什么样子 通过webpack去启动了有个项目,这里还是热部署,文件改动,内容就会改动 Dev这个命令会生成一个本地循环…...

滴滴前端一面面经(已挂)

面试过程 前段时间面试了滴滴的前端实习岗位,大厂的面试机会很难得,复习了很多前端知识。 拿到面试机会,是在地铁上投递了boss,当时hr看了我的简历就和我约了第二天的面试。电脑也没带,晚上就用手机复习了前端的一些…...

靠谱的适合上班族做的副业,这几种一定要试试!

作为上班族,我们的时间常常被工作和日常生活所占据,很少有机会去追求自己的兴趣和创造额外的收入来源。然而,副业是一种理想的选择,可以帮助我们实现多样化的发展,并在经济上取得一定的突破。正如书中所言:…...

VSCode连接服务器

Pycharm连接服务器参考我的另一篇文章Pycharm远程连接服务器_pycharm进入服务器虚拟环境终端_Jumbo星的博客-CSDN博客 本质上Pycharm和VSCode都只是IDE,没有什么好坏之分。但是因为Pycharm连接服务器(准确来说是部署)需要买professional。而…...

Python爬虫网络安全:优劣势和适用范围分析

各位Python程序猿大佬们!在当今数字化时代,网络安全是至关重要的。保护你的网络通信安全对于个人和组织来说都是非常重要的任务。在本文中,我将与你一起探讨Python网络安全编程中的代理、虚拟专用网络和TLS这三个关键概念,分析它们…...

swift APP缓存

这里的APP缓存是指Cache文件夹里的内容,iOS系统从iOS 10开始就支持系统自动清理功能了。 建议重要的内容不要放到 Cache文件夹中。 一、获取缓存 /// 获取缓存大小public static func getCacheSize() -> String {let folderPath NSSearchPathForDirectoriesIn…...

Linux中的dpkg指令(dpkg -l | grep XXX等)

dpkg是Debian包管理系统中的一个工具,用于在Linux系统中安装、升级、删除和管理软件包。它是Debian、Ubuntu以及基于它们的发行版中的包管理器。 dpkg 有很多用法,常用之举例:dpkg -l | grep apt 显示系统中安装的与apt相关(命名&#xff09…...

import type {} from ‘module‘ 具体解释

import type { AxiosInstance, AxiosRequestConfig } from axiosimport type { RequestConfig, RequestInterceptors } from ./typesimport type {} from module 是 TypeScript 中的一种导入语法,用于导入类型声明而不导入具体的值,它告诉 TypeScript 编…...

十年JAVA搬砖路——数据结构线性结构

线性结构 线性表是一种数据结构,用于存储一组有序的数据元素。它的特点是数据元素之间存在一对一的关系,每个元素只有一个前驱和一个后继(除了第一个元素和最后一个元素)。线性表可以用数组或链表来实现。 数据是指事物的符号表…...

Mybatis为什么需要预编译等一系列问题

1 SQL 预编译 SQL 预编译是一种提高数据库访问效率的技术,它通过将 SQL 语句预编译并存储在数据库中,减少每次执行时需要进行解析和编译的开销,从而提高数据库访问的效率。 在预编译阶段,SQL 语句会被解析并转换为可执行的二进制…...

【JVM基础】JVM入门基础

目录 JVM的位置三种 JVMJVM体系结构类加载器双亲委派机制概念例子作用 沙箱安全机制组成沙箱的基本组件 NativeJNI:Java Native Interface(本地方法接口)Native Method Stack(本地方法栈) PC寄存器(Program…...

【SpringBoot】详细介绍Spring Boot中@Component

在Spring Boot中,Component是一个通用的注解,用于标识一个类是Spring框架中的组件。Component注解是Spring的核心注解之一,它提供了自动扫描和实例化bean的功能。 具体来说,Component注解的作用是将一个普通的Java类转化为Spring…...

Redis执行lua脚本-Time函数-获取当前时间

演变过程: TIME 命令返回当前服务器的时间,包含两个条目 Unix 时间戳和这一秒已经过去的微秒数。 eval " local res redis.call(time); return res; " 0 eval " local current_time redis.call(TIME) local unix_timestamp tonumb…...

前端无需install快速调试npm包,Console-Import使用

Console-Import是一个Chrome扩展插件,可以方便地从Chrome控制台导入JavaScript和CSS资源。它可以帮助我们在开发过程中快速调试和测试第三方库或代码。 下载地址 安装 要安装Console-Import,请在Chrome网上应用店搜索“Console-Import”,然…...