第二章:解剖一个应用程序(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项目为不同的平台包含不同的填充?

目录
相关文章
|
设计模式 算法 安全
一文带你通俗理解23种软件设计模式(推荐收藏,适合小白学习,附带C++例程完整源码)
一文带你通俗理解23种软件设计模式(推荐收藏,适合小白学习,附带C++例程完整源码)
379 0
|
6月前
|
C++
c++primer plus 6 读书笔记 第十一章 使用类
c++primer plus 6 读书笔记 第十一章 使用类
|
7月前
|
存储 分布式计算 Java
深入探究JAVA编程语言:概念、应用与实例分析
**JAVA**是广泛应用的高级编程语言,以其易学性、跨平台能力和高效的性能著称。它采用面向对象编程,强调封装、继承和多态,且具备平台无关性、内置安全性和多线程支持。JAVA广泛应用于Web开发(如JSP、Servlet)、移动应用(Android开发)、大数据处理(Hadoop、Spark)和桌面应用。通过一个计算两数之和的简单示例,展示了JAVA的易读性和面向对象特性,帮助读者理解JAVA在实际开发中的运用。
|
7月前
|
存储 编译器 C++
嵌入式中C++ 编程习惯与编程要点分析
嵌入式中C++ 编程习惯与编程要点分析
55 1
|
7月前
|
编译器 API Windows
windows编程基础
windows编程基础
43 0
|
Java 图形学 Spring
Unity物理系统基本概念
Unity物理系统基本概念
111 0
|
数据可视化 测试技术 uml
【UML建模】(1) UML建模的初了解,概述,组成,作用
UML (Unified Modeling Language)是一种通用的可视化的建模语言,可以用来描述、可视化、构造和文档化软件密集型系统的各种工件。它不是一种程序设计语言。 UML 是独立于过程的,它可以在软件生命周期的各个阶段运用,不过主要应用于软件开发的设计与分析阶段。
469 0
【UML建模】(1) UML建模的初了解,概述,组成,作用
|
监控 数据可视化 测试技术
软工导第一节课 计算机软件工程学作一个简短的概述,回顾计算机系统发展简史 软件工程的基本原理和方法有概括的本质的认识,详细讲解生命周期相关知识讲解8种典型的软件过程模型
软工导第一节课 计算机软件工程学作一个简短的概述,回顾计算机系统发展简史 软件工程的基本原理和方法有概括的本质的认识,详细讲解生命周期相关知识讲解8种典型的软件过程模型
277 0
软工导第一节课 计算机软件工程学作一个简短的概述,回顾计算机系统发展简史 软件工程的基本原理和方法有概括的本质的认识,详细讲解生命周期相关知识讲解8种典型的软件过程模型
|
Android开发 iOS开发 Windows