第二章:解剖一个应用程序(6)

简介:

解决方案1.在页面上添加填充
Page类定义了一个名为Padding的属性,用于标记内容不能侵入的页面内部周围的区域。 Padding属性的类型是Thickness,它是一个定义了名为Left,Top,Right,Bottom的四个属性的结构。 (您可能需要记住该顺序,因为这是您在厚度构造函数以及XAML中定义属性的顺序。)厚度结构还定义了构造函数,用于在所有四边上设置相同的填充量或设置 在左边和右边,在顶部和底部相同的金额。
在你最喜欢的搜索引擎中进行一些研究,可以发现iOS状态栏的高度为20(二十个,你可能会问,二十个像素,实际上,现在只是把它们看作20个单位。 大部分的Xamarin.Forms编程,你不需要打扰数字大小,但是第5章,“处理大小”,将提供一些指导,当你需要到像素级。)
你可以像这样容纳状态栏:

点击(此处)折叠或打开

namespace Greetings
{
    public class GreetingsPage : ContentPage
    {
        public GreetingsPage ()
        {
            Content = new Label
            {
                Text = "Greetings, Xamarin.Forms!"
            };
        Padding = new Thickness(0, 20, 0, 0);
        }
    }
}

现在问候出现在页面顶部20个单位:
2018_01_24_205036

在ContentPage上设置Padding属性可以解决文本覆盖iOS状态栏的问题,但是它也会在Android和Windows Phone上设置相同的填充,不需要填充。 有没有办法只在iPhone上设置这个填充?
解决方案2.仅包含适用于iOS的填充(仅限SAP)
共享资产项目(SAP)方法的优点之一是项目中的类是应用程序项目的扩展,因此您可以使用条件编译指令。
让我们试试这个。 我们需要一个基于SAP模板的名为GreetingsSap的新解决方案,以及一个名为GreetingsSapPage的GreetingsSap项目中的新页面类。 要仅在iOS中设置填充,该类看起来像这样:

点击(此处)折叠或打开

{
    public class GreetingsSapPage : ContentPage
    {
        public GreetingsSapPage ()
        {
            Content = new Label
            {
                Text = "Greetings, Xamarin.Forms!"
            };
#if __IOS__
            Padding = new Thickness(0, 20, 0, 0);
#endif
        }
    }
}

if指令引用了条件编译符号__IOS__,所以Padding属性只是为iOS项目设置的。 结果如下所示:

2018_01_24_205434

但是,这些条件编译符号只影响程序的编译,所以在PCL中不起作用。 有没有办法让PCL项目为不同的平台包含不同的填充?

目录
相关文章
|
3月前
|
编译器 API Windows
windows编程基础
windows编程基础
13 0
|
5月前
|
Java 图形学 Spring
Unity物理系统基本概念
Unity物理系统基本概念
|
数据可视化 测试技术 uml
【UML建模】(1) UML建模的初了解,概述,组成,作用
UML (Unified Modeling Language)是一种通用的可视化的建模语言,可以用来描述、可视化、构造和文档化软件密集型系统的各种工件。它不是一种程序设计语言。 UML 是独立于过程的,它可以在软件生命周期的各个阶段运用,不过主要应用于软件开发的设计与分析阶段。
346 0
【UML建模】(1) UML建模的初了解,概述,组成,作用
|
监控 数据可视化 测试技术
软工导第一节课 计算机软件工程学作一个简短的概述,回顾计算机系统发展简史 软件工程的基本原理和方法有概括的本质的认识,详细讲解生命周期相关知识讲解8种典型的软件过程模型
软工导第一节课 计算机软件工程学作一个简短的概述,回顾计算机系统发展简史 软件工程的基本原理和方法有概括的本质的认识,详细讲解生命周期相关知识讲解8种典型的软件过程模型
203 0
软工导第一节课 计算机软件工程学作一个简短的概述,回顾计算机系统发展简史 软件工程的基本原理和方法有概括的本质的认识,详细讲解生命周期相关知识讲解8种典型的软件过程模型
|
SQL 缓存 数据库连接
艾伟_转载:基于.NET平台的Windows编程实战(四)—— 数据库操作类的编写
本系列文章导航 基于.NET平台的Windows编程实战(一)——前言 基于.NET平台的Windows编程实战(二)—— 需求分析与数据库设计 基于.NET平台的Windows编程实战(四)—— 数据库操作类的编写 基于.NET平台的Windows编程实战(五)—— 问卷管理功能的实现 基于.NET平台的Windows编程实战(六)—— 题目管理功能的实现 大家都知道本系统的正常运行少不了数据库操作这一块,且其在本系统中具有决定性作用,可以说没有它的操作系统将无法运行,故在本节课程中,专门把针对数据库的操作类拿出来讲讲,以便大家更加容易理解后面的课程。
883 0
|
SQL 缓存 数据库连接
艾伟:基于.NET平台的Windows编程实战(四)—— 数据库操作类的编写
本系列文章导航 基于.NET平台的Windows编程实战(一)——前言 基于.NET平台的Windows编程实战(二)—— 需求分析与数据库设计 基于.NET平台的Windows编程实战(四)—— 数据库操作类的编写 基于.NET平台的Windows编程实战(五)—— 问卷管理功能的实现 基于.NET平台的Windows编程实战(六)—— 题目管理功能的实现 大家都知道本系统的正常运行少不了数据库操作这一块,且其在本系统中具有决定性作用,可以说没有它的操作系统将无法运行,故在本节课程中,专门把针对数据库的操作类拿出来讲讲,以便大家更加容易理解后面的课程。
968 0
|
Android开发 iOS开发 Windows
|
Android开发 iOS开发 Windows
|
Android开发 iOS开发 Windows