Maui blazor ios 按设备类型设置是否启用safeArea
需求,新做了个app, 使用的是maui blazor技术,里面用了渐变背景,在默认启用SafeArea情况下,底部背景很突兀
- 由于现版本maui在SafeArea有点bug,官方教程的<ContentPage SafeArea=false不生效,于是要用以下代码hack一下
Microsoft.Maui.Handlers.LayoutHandler.Mapper.AppendToMapping("Custom", (h, v) =>{if (v is Layout layout){layout.IgnoreSafeArea = true;}});
带来的问题是,网页上下穿透了。
- 继续深入研究,用以下代码设置刘海屏上边距
protected override void OnAppearing(){base.OnAppearing();if (withSafeArea){var safeInsets = On<iOS>().SafeAreaInsets();On<iOS>().SetUseSafeArea(false);safeInsets.Top = 35;Padding = safeInsets;} }
存在的问题是,非刘海屏设备也设置了上边距
- 最终代码,检查设备类型,按需配置上边距
using Microsoft.Maui.Controls.PlatformConfiguration;
using Microsoft.Maui.Controls.PlatformConfiguration.iOSSpecific;namespace MyApp.Maui;public partial class MainPage : ContentPage
{bool withSafeArea = false;public MainPage(){InitializeComponent();if (DeviceInfo.Current.Idiom == DeviceIdiom.Phone){var screenSize = DeviceDisplay.MainDisplayInfo;if (screenSize.Height / screenSize.Density >= 812.0f){withSafeArea = true;}}if (withSafeArea) { Microsoft.Maui.Handlers.LayoutHandler.Mapper.AppendToMapping("Custom", (h, v) =>{if (v is Layout layout){layout.IgnoreSafeArea = true;}});}}protected override void OnAppearing(){base.OnAppearing();if (withSafeArea){var safeInsets = On<iOS>().SafeAreaInsets();On<iOS>().SetUseSafeArea(false);safeInsets.Top = 35;Padding = safeInsets;} }
}
- 题外话,网页可加上 viewport-fit=cover 效果更好
<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no, viewport-fit=cover" />

相关文章:
Maui blazor ios 按设备类型设置是否启用safeArea
需求,新做了个app, 使用的是maui blazor技术,里面用了渐变背景,在默认启用SafeArea情况下,底部背景很突兀 由于现版本maui在SafeArea有点bug,官方教程的<ContentPage SafeAreafalse不生效,于…...
C#系列-使用 Minio 做图片服务器实现图片上传 和下载(13)
1、Minio 服务器下载和安装 要在本地安装和运行 MinIO 服务器,你可以按照以下 步骤进行操作: 1. 访问 MinIO 的官方网站:https://min.io/,然后 点击页面上的”Download”按钮。 2. 在下载页面上,选择适合你操作系统的 …...
生活篇——华为手机去除负一屏
华为手机去除如下图的恶心负一屏 打开华为的应用市场app 进入:我的-设置-国家/地区(改为俄罗斯)-进入智慧助手检查更新并更新智慧助手。 然后重复开始的操作,将地区改回中国,这样就没有负一屏了。...
2024牛客寒假算法基础集训营2-c Tokitsukaze and Min-Max XOR
来源 题目 Tokitsukaze 有一个长度为 n 的序列 a1,a2,…,an和一个整数 k。 她想知道有多少种序列 b1,b2,…,bm满足: 其中 ⊕\oplus⊕ 为按位异或,具体参见 百度百科:异或 答案可能很大,请输出 mod1e97 后的结果。 输入描述…...
C语言:指针的基础详解
目录 1. 内存 2. 取地址& 3. 指针变量 4. 解引用 4.1 *解引用 4.2 []解引用 4.3 ->解引用 5. 指针变量的大小 5.1 结论 6. 指针运算 7. void* 指针 8. const修饰指针 8.1 const修饰变量 8.2 const修饰指针变量 8.3 结论 9. 野指针 9.1 为什么会出现野指…...
PHP+vue+mysql校园学生社团管理系统574cc
运行环境:phpstudy/wamp/xammp等 开发语言:php 后端框架:Thinkphp 前端框架:vue.js 服务器:apache 数据库:mysql 数据库工具:Navicat/phpmyadmin 前台功能: 首页:展示社团信息和活动…...
VS Code中主程序C文件引用了另一个.h头文件,编译时报错找不到函数
目录 一、问题描述二、问题原因三、解决方法四、扩展五、通过CMake进行配置 一、问题描述 VS Code中主程序C文件引用了另一个.h头文件,编译时报错找不到函数 主程序 main.c #include <stdio.h> #include "sumaa.h"int main(int, char**){printf(&q…...
边缘计算:重塑数字世界的未来
引言 随着物联网(IoT)设备的激增和5G网络的普及,我们正站在一个计算模式的新纪元门槛上——边缘计算。这一技术范式将数据处理和分析推向网络的边缘,即设备或终端,为实时性要求较高的应用提供了前所未有的可能性。 目…...
2024 前端面试题 附录3
这里记录的是昨天和今天原篇的知识点补充 原篇地址: 2024 前端面试题(GPT回答 示例代码 解释)No.41 - No.60 2024 前端面试题(GPT回答 示例代码 解释)No.61 - No.100 2024 前端面试题(GPT回答 示例代…...
[Vue warn]: Duplicate keys detected: ‘1‘. This may cause an update error.
[Vue warn]: Duplicate keys detected: ‘1‘. This may cause an update error.——> Vue报错,key关键字不唯一: 解决办法:修改一下重复的id值!!!...
Docker-Learn(二)保存、导入、使用Docker镜像
1.保存镜像 根据上一节内容,将创建好镜像进行保存,需要退出当前的已经在运行的docer命令行中断里面,可以通过在终端里面输入指令exit或者按下键盘上的 ctrlD建退出: 回到自己的终端里面,输入指令: docker…...
第三百一十五回
文章目录 1. 概念介绍2. 基本用法3. 补充用法4. 内容总结 我们在上一章回中介绍了"再谈ListView中的分隔线",本章回中将介绍showMenu的用法.闲话休提,让我们一起Talk Flutter吧。 1. 概念介绍 我们在第一百六十三回中介绍了showMenu相关的内容…...
区块链(一): 以太坊基础知识
目录 什么是区块链?什么是以太坊?什么是加密货币?以太坊与比特币有什么不同?以太坊能做什么?什么是智能合约?以太坊社区以太坊白皮书 什么是区块链? 区块链是一个交易数据库,在网络…...
高级FPGA开发之基础协议PCIe
基础协议之PCIe部分 一、TLP包的包头 在PCIe的系统中,tlp包的包头的结构有许多部分是相似的,通过掌握这些常规的包头,能帮助理解在PCIe总线上各个设备之间如何进行数据的收发。 通用的字段 通用字段作用Fmt决定了包头是3DW还是3DWÿ…...
Vue核心基础1:数据代理
1 回顾Object.defineProperty方法 let str hello const person {name: 张三,age: 18 } Object.defineProperty(person, sex, {// value: 男,// enumerable: true, // 控制属性是否可以枚举,默认值是false// writable: true, // 控制属性是否可以被修改࿰…...
12 ABC串口接收原理与思路
1. 串口接收原理 基本原理:通过数据起始位判断要是否要开始接收的数据,通过采样的方式确定每一位数据是0还是1。 如何判断数据起始位到来:通过边沿检测电路检测起始信号的下降沿 如何采样:一位数据采多次,统计得到高…...
leetcode(二分查找)34.在排序数组中查找元素的第一个和最后一个位置(C++详细解释)DAY11
文章目录 1.题目示例提示 2.解答思路3.实现代码结果 4.总结 1.题目 给你一个按照非递减顺序排列的整数数组 nums,和一个目标值 target。请你找出给定目标值在数组中的开始位置和结束位置。 如果数组中不存在目标值 target,返回 [-1, -1]。 你必须设计…...
算法刷题框架
前言:最近积累了一些算法题量,正在刷东神的算法笔记,监督自己记录下读后启发,顺便帮助道友们阅读 数据结构 这一部分老生常谈,数据的存储方式只有顺序存储和链式存储。 最基本的数组和链表对应这两者,栈…...
跟着cherno手搓游戏引擎【24】开启2D引擎前的项目总结(包括前置知识汇总)
前置技术: c动态链接和静态链接: 隐藏的细节:编译与链接_哔哩哔哩_bilibili 【底层】动态链接库(dll)是如何工作的?_哔哩哔哩_bilibili 预编译,编译,汇编,链接 预编译头文件: 为…...
石子合并+环形石子合并+能量项链+凸多边形的划分——区间DP
一、石子合并 (经典例题) 设有 N 堆石子排成一排,其编号为 1,2,3,…,N。 每堆石子有一定的质量,可以用一个整数来描述,现在要将这 N 堆石子合并成为一堆。 每次只能合并相邻的两堆,合并的代价为这两堆石子的质量之和,…...
铸件去毛刺,伯朗特机器人带气动打磨头,恒力去除浇口残余
在铸造行业,无论是金属还是非金属铸件,脱模后都会不可避免地产生飞边、毛刺及浇口残余。这些瑕疵不仅影响产品外观,更可能妨碍后续装配,甚至在部件受力时成为应力集中点,影响产品使用寿命与安全性。传统的人工去毛刺作…...
Fluent模拟火箭发动机喷管?试试用分子动理论定义气体属性,避开数据缺失的坑
火箭发动机喷管仿真中的分子动理论实战:突破高温燃气物性数据困境 当你在Fluent中打开火箭发动机喷管的仿真项目时,面对H2/CO/H2O混合燃气在3000K温度梯度下的物性参数定义,是否曾为找不到可靠数据而抓狂?传统方法需要逐个温度点…...
从零到一:手把手教你用Cornerstone.js搭建一个基础的医学影像查看器
从零到一:手把手教你用Cornerstone.js搭建一个基础的医学影像查看器 医学影像的数字化呈现一直是医疗技术发展的重要方向。随着Web技术的进步,直接在浏览器中查看和操作DICOM等专业医学影像已成为可能。本文将带领前端开发新手一步步实现一个基础的医学影…...
CW32 S12SD紫外线传感器实战:从I2C驱动到数据校准全解析
1. 项目概述:从“晒太阳”到“测阳光”的精准跨越最近在做一个户外环境监测的小玩意儿,需要精确感知紫外线强度。市面上紫外线传感器不少,但CW32生态里的S12SD模块以其小巧、数字接口和不错的性价比,成功吸引了我的注意。这玩意儿…...
Orange Pi 3B深度评测:RK3566创客板在边缘AI与家庭服务器中的应用实战
1. 项目概述:一块“搅局”的创客板最近,Orange Pi 3B的发布在创客圈和嵌入式开发者社区里激起了一阵不小的波澜。官方打出的“创客价”这个标签,更是精准地戳中了许多硬件爱好者和项目开发者的心。简单来说,Orange Pi 3B是一款基于…...
告别复杂设置!Sunshine v0.21.0 + Moonlight安卓版:5分钟搞定家庭局域网游戏串流
5分钟极简指南:用Sunshine和Moonlight打造家庭游戏串流系统 客厅的沙发上,手机屏幕突然变成了你的高性能游戏PC——这不是科幻电影,而是每个家庭都能实现的游戏串流体验。过去需要复杂网络知识才能搭建的串流系统,如今借助Sunshin…...
别再乱设了!Design Compiler里set_input_delay的10个实战避坑点(附时序报告解读)
别再乱设了!Design Compiler里set_input_delay的10个实战避坑点(附时序报告解读) 在数字IC前端设计流程中,时序约束的准确性直接影响综合结果的质量。作为Synopsys Design Compiler(DC)的核心约束命令之一&…...
5分钟快速上手NewGAN-Manager:为足球经理打造个性化脸型包
5分钟快速上手NewGAN-Manager:为足球经理打造个性化脸型包 【免费下载链接】NewGAN-Manager A tool to generate and manage xml configs for the Newgen Facepack. 项目地址: https://gitcode.com/gh_mirrors/ne/NewGAN-Manager NewGAN-Manager 是一款专门为…...
别再手动复制了!用Python+Wind API批量下载股票、期货、债券代码的完整脚本
金融数据自动化采集实战:PythonWind API全市场证券代码批量获取指南 金融数据是量化研究和投资决策的基础,但手动从Wind客户端导出各类证券代码不仅耗时耗力,还容易出错。本文将手把手教你用Python调用Wind API实现股票、期货、债券、期权等全…...
VPU与NPU协同优化:边缘AI视觉处理的算力融合实践
1. 项目概述:边缘计算时代的算力融合新范式最近和几个做嵌入式AI和边缘设备的老朋友聊天,大家不约而同地都在讨论一个话题:在资源受限的边缘端,如何把有限的算力“榨干”,让模型跑得更快、更省电。聊着聊着,…...
