精华内容
下载资源
问答
  • 六视图怎么放
    千次阅读
    2021-03-16 10:49:15

    03d545986138

    data.png

    一 : 视图

    视图: view, 是一种有结构(有行有列)但是没结果(结构中不真实存放数据)的虚拟表, 虚拟表的结构来源不是自己定义, 而是从对应的基表中产生(视图的数据来源).

    ( 1 ) : 创建视图

    基本语法

    Create view 视图名字 as select语句; -- select语句可以是普通查询;可以是连接查询; 可以是联合查询; 可以是子查询.

    创建单表视图

    create view my_v1 as

    select * from my_student;

    创建多表视图

    视图表中有多表的情况下,字段不能重复

    create view my_v3 as

    select * from my_student as s left join my_class c on s.c_id = c.id; -- id重复

    ERROR 1060 (42S21): Duplicate column name 'id'

    正确创建多表

    create view my_v3 as

    select s.*,c.c_name,c.room from my_student as s

    left join my_class c

    on s.c_id = c.id;

    ( 2 ) : 查看视图

    查看表结构

    show create view my_v3\G

    show create table my_v3\G

    *************************** 1. row ***************************

    View: my_v3

    Create View: CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `my_v3` AS select `s`.`id` AS `id`,`s`.`number` AS `number`,`s`.`name` AS `name`,`s`.`sex` AS `sex`,`s`.`height` AS `height`,`s`.`c_id` AS `c_id`,`s`.`age` AS `age`,`c`.`c_name` AS `c_name`,`c`.`room` AS `room` from (`my_student` `s` left join `my_class` `c` on((`s`.`c_id` = `c`.`id`)))

    character_set_client: utf8

    collation_connection: utf8_general_ci

    1 row in set (0.00 sec)

    视图是一张虚拟表: 表, 表的所有查看方式都适用于视图: show tables [like]/desc 视图名字/show create table 视图名;

    ( 3 ) : 使用视图

    使用视图主要是为了查询: 将视图当做表一样查询即可.

    视图的执行: 其实本质就是执行封装的select语句.

    ( 5 ) : 修改视图

    视图本身不可修改, 但是视图的来源是可以修改的.

    修改视图: 修改视图本身的来源语句(select语句)

    desc my_v1

    +--------+-------------+------+-----+---------+-------+

    | Field | Type | Null | Key | Default | Extra |

    +--------+-------------+------+-----+---------+-------+

    | id | int(11) | NO | | 0 | |

    | number | char(10) | YES | | NULL | |

    | name | varchar(20) | YES | | NULL | |

    | sex | char(1) | YES | | NULL | |

    | height | int(11) | YES | | NULL | |

    | c_id | int(11) | YES | | NULL | |

    | age | tinyint(4) | YES | | NULL | |

    +--------+-------------+------+-----+---------+-------+

    alter view my_v1 as

    select id,name,age,sex,height,c_id from my_student;

    修改后视图结构

    +--------+-------------+------+-----+---------+-------+

    | Field | Type | Null | Key | Default | Extra |

    +--------+-------------+------+-----+---------+-------+

    | id | int(11) | NO | | 0 | |

    | name | varchar(20) | YES | | NULL | |

    | age | tinyint(4) | YES | | NULL | |

    | sex | char(1) | YES | | NULL | |

    | height | int(11) | YES | | NULL | |

    | c_id | int(11) | YES | | NULL | |

    +--------+-------------+------+-----+---------+-------+

    ( 6 ) : 删除视图

    Drop view 视图名字;

    drop view my_v4;

    视图的意义

    视图可以节省SQL语句: 将一条复杂的查询语句使用视图进行保存: 以后可以直接对视图进行操作

    数据安全: 视图操作是主要针对查询的, 如果对视图结构进行处理(删除), 不会影响基表数据(相对安全).

    视图往往是在大项目中使用, 而且是多系统使用: 可以对外提供有用的数据, 但是隐藏关键(无用)的数据: 数据安全

    视图可以对外提供友好型: 不同的视图提供不同的数据, 对外好像专门设计

    视图可以更好(容易)的进行权限控制

    二 : 视图数据操作

    视图是的确可以进行数据写操作的: 但是有很多限制

    将数据直接在视图上进行操作.

    ( 1 )新增数据

    数据新增就是直接对视图进行数据新增.

    注意 :多表视图不能新增数据

    可以向单表视图插入数据,但是视图中不包含的字段必须在基表中不能为空(或者没有默认值)字段

    比如视图中不包含number字段,但是基础表中有该字段,视图没有提供数据,基础表使用默认数据,NULL,该字段不能为空,否则插入失败

    select * from my_class;

    +----+---------+------+

    | id | c_name | room |

    +----+---------+------+

    | 3 | PHP0710 | A203 |

    | 4 | PHP0910 | C206 |

    +----+---------+------+

    insert into my_v2 values(2,'PHP0326','D306');

    再次查看表

    +----+---------+------+

    | id | c_name | room |

    +----+---------+------+

    | 2 | PHP0326 | D306 |

    | 3 | PHP0710 | A203 |

    | 4 | PHP0910 | C206 |

    +----+---------+------+

    ( 2 )删除数据

    多表视图不能删除

    +----+-----------+--------+------+--------+------+------+---------+------+

    | id | number | name | sex | height | c_id | age | c_name | room |

    +----+-----------+--------+------+--------+------+------+---------+------+

    | 6 | class0006 | 琪琪 | 女 | 168 | 2 | 19 | PHP0326 | D306 |

    | 7 | class0006 | 琪琪 | 女 | 168 | 2 | 24 | PHP0326 | D306 |

    | 8 | class0006 | 琪琪 | 女 | 168 | 2 | 16 | PHP0326 | D306 |

    | 1 | class0001 | 思思 | 男 | 184 | 3 | 16 | PHP0710 | A203 |

    | 4 | class0004 | 美美 | 男 | 172 | 3 | 18 | PHP0710 | A203 |

    | 5 | class0005 | 彩彩 | 男 | 166 | 3 | 7 | PHP0710 | A203 |

    | 2 | class0002 | 可可 | 男 | 182 | 1 | 10 | NULL | NULL |

    | 3 | class0003 | 娜娜 | 女 | 156 | 1 | 19 | NULL | NULL |

    +----+-----------+--------+------+--------+------+------+---------+------+

    The target table my_v3 of the DELETE is not updatable

    单表视图可以删除数据

    select * from my_v2;

    +----+---------+------+

    | id | c_name | room |

    +----+---------+------+

    | 2 | PHP0326 | D306 |

    | 3 | PHP0710 | A203 |

    | 4 | PHP0910 | C206 |

    +----+---------+------+

    select * from my_class;

    +----+---------+------+

    | id | c_name | room |

    +----+---------+------+

    | 2 | PHP0326 | D306 |

    | 3 | PHP0710 | A203 |

    | 4 | PHP0910 | C206 |

    +----+---------+------+

    删除视图数据

    delete from my_v2 where id = 4;

    +----+---------+------+

    | id | c_name | room |

    +----+---------+------+

    | 2 | PHP0326 | D306 |

    | 3 | PHP0710 | A203 |

    +----+---------+------+

    ( 3 )更新数据

    理论上不论单表视图还是多表示视图都可以更新数据.

    select * from my_v3;

    +----+-----------+--------+------+--------+------+------+---------+------+

    | id | number | name | sex | height | c_id | age | c_name | room |

    +----+-----------+--------+------+--------+------+------+---------+------+

    | 6 | class0006 | 琪琪 | 女 | 168 | 2 | 19 | PHP0326 | D306 |

    | 7 | class0006 | 琪琪 | 女 | 168 | 2 | 24 | PHP0326 | D306 |

    | 8 | class0006 | 琪琪 | 女 | 168 | 2 | 16 | PHP0326 | D306 |

    | 1 | class0001 | 思思 | 男 | 184 | 3 | 16 | PHP0710 | A203 |

    | 4 | class0004 | 美美 | 男 | 172 | 3 | 18 | PHP0710 | A203 |

    | 5 | class0005 | 彩彩 | 男 | 166 | 3 | 7 | PHP0710 | A203 |

    | 2 | class0002 | 可可 | 男 | 182 | 1 | 10 | NULL | NULL |

    | 3 | class0003 | 娜娜 | 女 | 156 | 1 | 19 | NULL | NULL |

    +----+-----------+--------+------+--------+------+------+---------+------+

    暂时没更新成功,回头检查一下表结构

    ERROR 1288 (HY000): The target table my_v3 of the UPDATE is not updatable

    更新限制: with check option, 如果对视图在新增的时候,限定了某个字段有限制: 那么在对视图进行数据更新操作时,系统会进行验证: 要保证更新之后,数据依然可以被实体查询出来,否则不让更新.

    create view my_v4 as

    -> select * from my_student where age > 18 with check option;

    mysql> update my_v4 set age = 17 where id = 7;

    ERROR 1369 (HY000): CHECK OPTION failed 'web13.my_v4'

    视图算法

    视图算法: 系统对视图以及外部查询视图的Select语句的一种解析方式.

    视图算法分为三种

    Undefined: 未定义(默认的), 这不是一种实际使用算法, 是一种推卸责任的算法: 告诉系统,视图没有定义算法, 系统自己看着办

    Temptable: 临时表算法: 系统应该先执行视图的select语句,后执行外部查询语句

    Merge: 合并算法: 系统应该先将视图对应的select语句与外部查询视图的select语句进行合并,然后执行(效率高: 常态)

    视图算法选择: 如果视图的select语句中会包含一个查询子句(五子句), 而且很有可能顺序比外部的查询语句要靠后, 一定要使用算法temptable,其他情况可以不用指定(默认即可).

    -- 指定算法为临时表

    create algorithm=temptable view my_v6 as

    select * from my_student order by height desc;

    二数据备份与还原

    备份: 将当前已有的数据或者记录保留

    备份: 将当前已有的数据或者记录保留

    数据备份还原的方式有很多种:

    数据表备份

    单表数据备份

    SQL备份

    增量备份

    ( 1 )数据表备份

    不需要通过SQL来备份;直接进入到数据库文件夹赋值对应的表结构以及数据文件,以后还原的时候,直接将备份的内容放进去即可

    数据表备份有前提条件 : 根据不同的存储引擎有不同区别

    存储引擎: mysql进行数据存储的方式

    主要是两种: innodb和myisam(免费)

    03d545986138

    数据库引擎

    创建一个张 myisam 表

    -- 创建myisam表

    create table my_myisam(

    id int)charset utf8 engine = myisam;

    mysql> select * from my_myisam;

    +------+

    | id |

    +------+

    | 1 |

    | 2 |

    | 3 |

    | 4 |

    +------+

    myisam 与 innodb数据存储方式

    innodb : 在windows只有表结构只有表结构,数据全部存储到ibdata1文件中

    myisam存储引擎 : 直接复制三个文件,然后直接放到对应的数据库下即可使用

    03d545986138

    image.png

    现在我们把这三文件复制到其他数据库,看看是否能查取成功

    03d545986138

    观察结果,看来成功了

    Database changed

    mysql> show tables;

    +---------------+

    | Tables_in_gjp |

    +---------------+

    | gjp_zhangwu |

    | my_myisam |

    +---------------+

    2 rows in set (0.00 sec)

    mysql> select * from my_myisam;

    +------+

    | id |

    +------+

    | 1 |

    | 2 |

    | 3 |

    | 4 |

    +------+

    /Users/a10.11.5/Desktop

    ( 2 )单表的数据备份

    每次只能备份一张表;只能备份数据( 表结构不能备份 )

    通常的使用 : 将表中的数据进行到处到文件

    备份方式 : 从表中选出一部分数据保存到外部的文件中(outfile)

    Select */字段列表 into outfile 文件所在路径 from 数据源; -- 前提: 外部文件不存在

    select * into outfile '/Users/a10.11.5/Desktop/tz.txt' from gjp_zhangwu;

    高级备份: 自己制定字段和行的处理方式

    Select */字段列表 into outfile 文件所在路径 fields 字段处理 lines 行处理 from 数据源;

    Fields: 字段处理

    Enclosed by: 字段使用什么内容包裹, 默认是’’,空字符串

    Terminated by: 字段以什么结束, 默认是”\t”, tab键

    Escaped by: 特殊符号用什么方式处理,默认是’\’, 使用反斜杠转义

    Lines: 行处理

    Starting by: 每行以什么开始, 默认是’’,空字符串

    Terminated by: 每行以什么结束,默认是”\r\n”,换行符

    -- 指定备份处理方式

    select * into outfile 'D:/server/temp/class1.txt'

    -- 字段处理

    fields

    enclosed by '"' -- 数据使用双引号包裹

    terminated by '|' -- 使用竖线分隔字段数据

    -- 行处理

    lines

    starting by 'START:'

    from my_class;

    数据还原

    将一个在外部保存的数据重新恢复到表中(如果表结构不存在,那么sorry)

    Load data infile 文件所在路径 into table 表名[(字段列表)] fields字段处理 lines 行处理; -- 怎么备份的怎么还原

    -- 还原数据

    load data infile 'D:/server/temp/class1.txt'

    into table my_class

    -- 字段处理

    fields

    enclosed by '"' -- 数据使用双引号包裹

    terminated by '|' -- 使用竖线分隔字段数据

    -- 行处理

    lines

    starting by 'START:';

    ( 3 )SQL备份

    备份的是SQL语句: 系统会对表结构以及数据进行处理,变成对应的SQL语句, 然后进行备份: 还原的时候只要执行SQL指令即可.(主要就是针对表结构)

    备份: mysql没有提供备份指令: 需要利用mysql提供的软件: mysqldump.exe

    Mysqldump.exe也是一种客户端,需要操作服务器: 必须连接认证

    Mysqldump/mysqldump.exe -uxx-pxx 数据库名字 [数据表名字1[ 数据表名字2...]] > 外部文件目录(建议使用.sql)

    单表备份

    mysql dump -uroot -proot mydatabase my_student > D:/server/temp/student.sql

    数据库整库备份

    Mysqldump/mysqldump.exe -hPup 数据库名字 > 外部文件目录

    mysqldump -uroot -proot mydatabase > D:/server/temp/mydatabase.sql

    SQL还原的方式

    方式一 :

    方案1: 使用mysql.exe客户端还原

    Mysql.exe/mysql -hPup 数据库名字 < 备份文件目录

    mysql -uroot -proot mydatabase < D:/server/temp/student.sql

    方式二 :

    Source 备份文件所在路径;

    source D:/server/temp/student.sql;

    SQL备份优缺点

    优点: 可以备份结构

    缺点: 会浪费空间(额外的增加SQL指令)

    ( 4 )增量备份

    不是针对数据或者SQL指令进行备份: 是针对mysql服务器的日志文件进行备份

    增量备份: 指定时间段开始进行备份., 备份数据不会重复, 而且所有的操作都会备份(大项目都用增量备份)

    更多相关内容
  • Arcgis()——布局视图技巧

    万次阅读 2021-02-22 09:12:49
    1数据视图的大小影响布局视图的大小 2布局视图插入不同数据框可以展示不同图片 3数据框里可以添加多个数据,添加的数据不会保存之前的可视化 但是复制进去就行 4数据框的边线:右键-属性-框架-边框里面设置为无 ...

    目录:

    1目标:呈现多张图片

    2流程:

    (1)页面和打印设置

    (2)调出标尺和参考线

    (3)插入数据框

    3布局视图技巧:

    1目标:呈现多张图片

    2流程:

    (1)页面和打印设置

     

     (2)调出标尺和参考线

    (3)插入数据框

    3布局视图技巧:

    1数据视图的大小影响布局视图的大小

    2布局视图插入不同数据框可以展示不同图片

    3数据框里可以添加多个数据,添加的数据不会保存之前的可视化

     但是复制进去就行

    4数据框的边线:右键-属性-框架-边框里面设置为无

    5布局视图的最外边缘性一开始设置为最大比较合适

    6布局视图里面无法更改数据视图里面的值

    7布局视图里的数据不会出现在栅格计算器里面

    8布局视图里面不同数据最好在数据视图里面统一比例尺寸

    9插入图例:分类图需要选标题,连续图不用

    10合并分类后图,再做掩膜分开不了

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

    展开全文
  • 要想在 Xcode 中预览画布中的视图,或者与画布中的视图进行交互,需要 Mac 系统版本号不低于 macOS Catalina 10.15。 ② 步骤 打开 Xcode,在启动页面点击创建新工程,或者在菜单中选择文件->新建->项目: ...

    一、创建项目并体验画布

    ① 系统要求

    • 创建 SwiftUI 项目工程,体验画布、预览模式和 SwiftUI 模板代码;
    • 要想在 Xcode 中预览画布中的视图,或者与画布中的视图进行交互,需要 Mac 系统版本号不低于 macOS Catalina 10.15。

    在这里插入图片描述

    ② 步骤

    • 打开 Xcode,在启动页面点击创建新工程,或者在菜单中选择文件->新建->项目:

    在这里插入图片描述

    在这里插入图片描述

    • 在项目模板选择器中,选择 iOS 作为项目平台,选项单视图应用(App)作为项目模板,并点击下一步(Next):

    在这里插入图片描述

    • 输入项目名称 FirstSwiftUI,选择 SwiftUI 作为用户界面的创建方式,并点击下一步 Next,在磁盘目录下选择一个位置用来存放新创建的工程项目:

    在这里插入图片描述

    • 工程创建好并打开后,在文件导航器中,选择 ContentView.swift 文件,可以浏览一下 SwiftUI 视图的组成结构。默认情况下,SwiftUI 的视图文件包含两个结构体 Struct:
      • 第一个结构体遵循 View 协议,描述视图的内容和布局;
      • 第二个结构体声明为第一个视图的预览视图。

    在这里插入图片描述

    • 在**画布(Canvas)上,点击恢复(Resume)**按钮可以显示预览视图,也可以使用快捷键 Command+Option+P(如果工程中没有出现画布 Canvas,可以选择菜单:编辑器 Editor -> 编辑器和画布 Canvas,打开画布进行预览):

    在这里插入图片描述

    • 在 body 属性内部,修改文字 Hello, world! 为其它的不同的文字,当在改变代码的同时,预览视图也会实时的更新对应的内容变化:

    在这里插入图片描述

    二、定制文本视图 Text View

    ① 通过修改代码来改变视图的显示样式

    • 可以通过修改代码来改变一个视图的显示样式,也可以通过检查器获取视图可修改属性,然后再写对应的代码改变样式。在创建应用的过程中,可以同时使用源码编辑器、画布或者检查器,无论当前使用的是哪一个工具编辑视图,代码会保持和这些编辑器展示的样式一致:

    在这里插入图片描述

    ② 使用检查器来定制视图的显示样式

    • 在预览视图中,按下 Command 键的同时点击控件,会弹出一个编辑弹层,然后选择检查器 Inspect, 编辑弹层显示所有可以定制的视图属性,选中的控件不同,可以定制的属性集合也不相同:

    在这里插入图片描述

    • 使用检查器把文字更改为Turtle Rock,也就是在应用中显示的第一个地标的名称:

    在这里插入图片描述

    • 改变字体修改器为 Title,使用系统字体修饰文字,可以自动按照用户在设备中设置的字体偏好大小进行调整。定制 SwiftUI 视图所调用的方法被称为视图修改器 Modifiers,修改器在原视图的基础上修改部分显示样式和属性,返回一个新的视图,这样就可以让多个修改器串连进行,形成水平方向的链式调用,或者垂直方向的堆叠调用:

    在这里插入图片描述

    • 手动在代码中添加 foregroundColor(.green) 属性修改器,就会把文字的颜色调整为绿色。代码是决定视图样式的根本,当我们使用检查器来改变或移除一个属性修改器时,Xcode 也会在代码编辑器中同步改变或移除对应的修改器代码:

    在这里插入图片描述

    • 在代码编辑器中,按下 Command 的同时点击 Text 单词也可以属性弹窗,从中选择检查器后,再点击 Color 弹出菜单,选择继承 Inherited,让文字的颜色恢复成原来的黑色:

    在这里插入图片描述

    • 当我们移除 foregroundColor(.green) 时,Xcode 会自动更新代码来反映视图的实际显示状况:

    在这里插入图片描述

    三、使用栈来组合视图

    • 上文中创建了标题视图,接下来要添加一些文本视图来描述地标所在州及所在公园的名称等其它详细信息:

    在这里插入图片描述

    • 创建 SwiftUI 视图就是在 body 属性中描述视图的内容、布局及行为,但 body 属性只返回单个视图,这时组合多个视图时可以把它们放入一个栈中,通过水平、垂直、前后嵌套多个视图完成视图组合,做为一个整体在 body 属性中返回。
    • 现在使用一个垂直栈,把标题放在包含公园详情的水平栈的上方,在水平栈中,布局公园详情相关的内容,可以使用 Xcode 提供的结构化布局来把视图嵌套在容器视图中。
    • ① 按下 Command 键的同时,点击 Text 视图的初始化代码打开结构化编辑弹窗,然后选择把控件嵌套在垂直栈中 Embed in VStack,在栈中添加 Text View 控件可以从组件中直接拖进栈中完成:

    在这里插入图片描述

    • ② 点击 Xcode 右上角的 + 号,托动一个 Text 控件到指定位置,代码立即就会在编辑器中补全;

    在这里插入图片描述

    • ③ 把 Text 视图的占位文本修改为 Joshua Tree Nation Park,视图会自动调整位置布局;
    • ④ 设置位置控件的字体为子标题样式:
    struct ContentView: View {
        var body: some View {
            VStack {
                Text("Turtle Rock")
                    .font(.title)
                .padding()
                Text("Joshua Tree Nation Park")
                    .font(.title2)
            }
        }
    }
    

    在这里插入图片描述

    • ⑤ 设置 VStack 初始化参数为左对齐内部的子视图,默认情况下,栈会把内部视图在自己的主轴上居中对齐,并自动计算各子视图的间距。下一步要添加一个 Text 控制用来描述公园的状态,它水平排列在位置信息的右边;

    在这里插入图片描述

    • ⑥ 在画布内,command 按下的同时点击位置视图,在弹出的菜单中选择嵌入到水平栈中 Embed in HStack;

    在这里插入图片描述

    • ⑦ 在位置控件的后面加一个公园状态的 Text 视图,并把占位文字改为 California,字体设置为子标题样式;

    在这里插入图片描述

    • ⑧ 为了水平布局使用整个屏幕宽度,在位置控件和公园状态控件中间添加一个 Spacer 控件,用来填充两个控件中间的空白部分,并把两个控件分别顶向屏幕的两侧;Spacer 是一个可以伸缩的空白控件,它负责占用其它控件布局完成后剩下的所有空间;

    在这里插入图片描述

    • ⑨ 使用 padding() 修改器给地标信息内容视图整体加内边距;

    在这里插入图片描述

    四、创建自定义图像视图 Image

    • 有了地标名称、地标位置及状态视图,下一步再添加一个地标图片视图,这个图片视图将自定义遮罩 mask、边框 border 和阴影 shadow;可以从控件加中拖一个 Image 到画布,或直接写代码到代码编辑器中。
    • 在项目资源文件中找到 turtlerock.png 图片,把它拖入资源编辑器 asset catalog editor 中,Xcode 会创建一个新的图片集来存放这个图片,然后创建一个 SwiftUI 视图:

    在这里插入图片描述

    • 选择文件->新建->文件,打开模板选择器,在用户界面(User Interface)板块下,选择 SwiftUI View 并点击下一步,命名为 CircleImage.swift,并点击创建(Create),现在已经准备好插入图片并修改布局来满足设计目标:

    在这里插入图片描述

    • 用 Image 替换 Text,并使用 turtlerock 图片初始化 Image 视图;

    在这里插入图片描述

    • 添加 clipShape(Circle()) 修改器到 Image,给图片添加圆形剪切效果;Circle 是一个形状,它可以被用作遮罩、也可以是圆圈,还可以是圆形填充视图;
    • 创建另一个灰色的圆圈并把它作为一个浮层添加到图片上,相当于给图片加了一个灰色边框;
    • 给视图添加半径为 10 的阴影;

    在这里插入图片描述

    • 把圆形边框的颜色改成白色,就完成了自定义图片视图的创建:

    在这里插入图片描述

    五、UIKit 视图与 SwiftUI 视图混合使用

    • 现在要创建一个地图视图,可以使用 MapKit 中的 MKMapView 视图类来渲染地图,要在 SwiftUI 中使用 UIView 及其子类,需要把这些 UIView 包裹在一个遵循 UIViewRepresentable 协议的 SwiftUI 视图中,SwiftUI 中也包含适配 WatchKit 和 AppKit 的类似的协议:

    在这里插入图片描述

    • 创建一个自定义视图用来容纳和显示 MKMapView:
      • 选择文件->新建->文件,选择 iOS 平台,选择 SwiftUI View 模板,并点击下一步(Next),命名文件为 MapView.swift,并点击创建(Create);
      • 代码中导入 MapKit 引用,声明 MapView 遵循 UIViewRepresentable 协议,UIViewRepresentable 协议要求实现两个方法 UIView(context:) 和 updateUIView(_:context:),第一个方法用来创建 MKMapView,第二个方法用来配置视图响应状态变化;
      • 替换 body,用 makeUIView(context:) 方法来代替,创建并返回一个空的 MKMapView;
      • 创建方法 updateUIView(_:context:),在方法内部设置地图视图的坐标为 Turle Rock 的中心。在静态模式下预览时,只会渲染 SwiftUI 视图的部分,因为 MKMapView 是 UIView 的子类,所以需要切换到实时预览模式下才能看到地图被完全渲染出来;

    在这里插入图片描述

      • 点击 Live Preview(实时预览)按钮,可能需要点击 Try Again 和 Resume 按钮来激活预览模式的切换,切换到实时预览模式下不久就可以看到指定地标所在的地图位置:

    在这里插入图片描述

    六、组合地标详情页

    • 我们已经完成了创建一个地标详情页所需要的各种子视图元素:名称、地点、圆形图片以及位置地图,现在可以把这些视图元素组合在一起形成地标详情页的整个视图:

    在这里插入图片描述

    • 在项目工程浏览器中选择 ContentView.swift 文件;
    • body 属性中嵌入一个 VStack 视图,它内部包含另一个 VStack 视图,内部的 VStack 视图又包含三个 Text 视图;
    • 在外层 VStack 的顶部添加自定义的地图视图 MapView,并使用 frame(width:height:) 设置视图大小。当只指定高度时,宽度会自动计算为父视图的宽度,在这里就是屏幕宽度;
    • 点击 Live Preview 按钮进入实时预览模式,查看地图渲染情况,在实时预览模式下可以编辑视图,最新的改动也可以实时的刷新出来;
    • 在 MapView 后面再添加一个 CircleImage 视图;
    • 为了让图片视图叠放在地图视图的上面,可以设置图片视图的垂直偏移量为 -130,图片视图的底部内边距也为 -130,这个效果就是把图片垂直上移了 130,同时和下面的文字区域留出了 130 的空白分隔区;
    • 在外层 VStack 内部的最下面加上 Spacer,可以让上面的视图内容顶到屏幕的上边;
    • 为了让地图的视图内容显示在状态栏的下方,可以给 MapView 添加 edgesIgnoringSafeArea(.top) 修改器,这可
    • 以让它在布局时忽略顶部的安全区域边距;

    在这里插入图片描述

    七、总结

    • 在声明自定义 SwiftUI 视图时,视图布局要声明 body 属性中;View 协议中要求实现 body 属性,每一个 SwiftUI 视图都遵循 View 协议。
    • 有如下代码布局,那么运行视图效果是什么样?
    struct ContentView: View {
        var body: some View {
        	CircleImage()
            VStack(alignment: .leading) {
                Text("Turtle Rock")
                    .font(.title)
                Text("Joshua Tree Nation Park")
            }
        }
    }
    

    在这里插入图片描述

    • 从 body 属性中返回三个视图:
    VStack(alignment: .leading) {
    	Text("Turtle Rock")
    		.font(.title)
    	Divider()
    	Text("Joshua Tree Nation Park")
    }
    
    • 修改器每次都是返回一个新的对象,所以多个修改器可以通过链式调用,配置视图时,使用修改器的方式如下:
    Text("Turtle Rock")
    	.font(.title)
    	.foregroundColor(.purple)
    
    展开全文
  • SpringMvc框架(视图视图解析器)

    千次阅读 2020-07-14 10:32:31
    目录,更新ing,学习Java的点滴记录   目录放在这里太长了,附目录链接大家可以自由选择查看--------Java学习目录 SpringMvc知识 第一篇---->...第篇---->拦截器开发 处理模型数据 1 介绍 视

    目录,更新ing,学习Java的点滴记录

      目录放在这里太长了,附目录链接大家可以自由选择查看--------Java学习目录

    SpringMvc知识

    第一篇---->SpringMvc初识|MVC|三层架构
    第二篇---->IoC容器上下文和映射请求上下文
    第三篇---->熟悉基本开发流程
    第四篇---->接收各类请求参数的方式
    第五篇---->获取请求中的Request,Session,Cookie等对象属性
    第六篇---->拦截器开发
    第七篇---->视图和视图解析器
    第八篇---->数据校验
    第九篇---->文件上传方式
    第十篇---->数据转换和数据格式化

    视图和视图解析器

    1 模型数据

    1.1 介绍

    • 视图是业务处理后展现给用户的内容,一般情况下,都会在业务处理方法中返回一些数据,这些数据将回显到页面中,供用户查看。在之前谈SpringMvc开发流程的时候,说到控制器获取数据后,会将数据装配到模型数据和视图中,然后将视图名称转发到视图解析器中,通过解析器后得到最终视图,最后将数据模型渲染到视图中,展示最终结果给用户。
    • SpringMvc提供了以下几种途径输出模型数据
        1)ModelAndView:处理方法返回值类型为ModelAndView时,方法中可以通过该对象添加模型数据
        2)Map或者Model:在处理方法中可以创建对应的Model或者Map对象,用来保存对应的数据,最后将Map或者Model返回即可
        3)@SessionAttributes:将模型中的某个属性暂存到HttpSession中,以便多个请求之间可以共享这个属性
        4)@ModelAttribute:方法形参标注该注解后,行藏的对象就会放到数据模型中。

    1.2 ModelAndView

    • 控制器处理方法的返回值如果是ModelAndView,则其既包含视图信息也包含模型数据信息
    • 添加模型数据的方式
        1)ModelAndView addObject(String attributeName, Object attributeValue):设置属性名和属性值
        2)ModelAndView addAllObjects(Map<String, ?> modelMap):如果有多个属性需要传递,可以先保存在一个Map集合中,然后直接传递一个Map集合,达到实现传递多个属性的效果
    • 设置视图的方式
        1)void setViewName(String viewName):传递一个视图名称,DisPatcherServlet会根据该视图名称结合视图解析器进行解析
        2)void setView(View view):传递一个View类型的对象,
    • 示例
        1) 创建处理器方法
        在这里插入图片描述
        2)在页面中回显模型数据
        在这里插入图片描述
        在这里插入图片描述

    1.3 Model,Map

    • SpringMvc在内部使用了一个Model接口存储模型数据
    • 具体步骤:
        1)SpringMvc在调用方法前会调用一个隐含的模型对象作为模型数据的存储对象
        2)如果方法的形参是Map或者Model类,SpringMvc会将隐含类型的引用传递给这些形参。在方法体内,可以通过这个形参对象访问到模型数据中所有数据,也可以向模型中添加新的属性数据。
    • 示例
        在这里插入图片描述
        在这里插入图片描述

    1.4 @SessionAttributes

    • 这个在第五篇里面已经提到过了,所以不重复了

    1.5 @ModelAttribute

    • PS:这一部分内容转载自–》@ModelAttribute使用,并做适当修改
    • @ModelAttribute注解的使用位置
        1)应用在方法上
        2)应用在方法的参数上
        3)应用在方法上,并且方法也使用了@RequestMapping
    1. 应用在方法上
    • 被@ModelAttribute注解的方法会在当前Controller每个方法执行之前都执行,因此对于一个Controller中包含多个URL的时候,要谨慎使用。
    • 1)使用@ModelAttribute注解无返回值的方法
        在这里插入图片描述
        说明:当访问/view/test的时候,首先会执行myModel方法,在该方法内,会接受请求中传递的参数,并且使用一个Model对象,将str值保存起来,然后会执行test方法,然后跳转到success.jsp页面中,此时Model对象也会被传递过来,在页面中也可以获取到Model中的值
        如果把myModel和test方法合二为一,就是下面的样子:
        在这里插入图片描述
    • 2)使用@ModelAttribute注解有返回值的方法
        在这里插入图片描述
        在这里插入图片描述
        在这种情况下,返回值对象被默认放到隐含的Model中,在Model中的key为返回值首字母小写,value为返回的值。如果对于key的默认取值不满意,可以使用@ModelAttribute(value=“xxx”)来改变key的值
        上面的情况等同于下面这个形式:
        在这里插入图片描述
        现在我们启动测试,看看能否在页面中获取到值
        在这里插入图片描述
    1. 应用在方法的参数上
        在这里插入图片描述
        在这里插入图片描述
        在这里插入图片描述
        从演示效果来看,使用@ModelAttribute注解的参数,会从前面@ModelAttribute注解的方法中给Model传入的参数中寻找对应属性并传入
        这里强调一个@SessionAttributes的使用,因为和@ModelAttribute注解有关系
        在这里插入图片描述
    2. 应用在方法上,并且方法也使用了@RequestMapping
        在这里插入图片描述
        这种情况下,返回值String(或者其他对象)就不再是视图了,而是放入到Model中的值,此时对应的页面就是@RequestMapping中的值test
        如果类上有@RequestMapping,则视图路径还要加上类的@RequestMapping值,上面例子中视图路径为view/test.jsp

    2 视图和视图解析器

    2.1 引入

    • 视图是展示给用户的内容。在此之前,需要通过控制器得到对应的数据模型,如果是非逻辑视图,则不会经过视图解析器定位视图,而是直接将数据模型渲染就结束了;而逻辑视图则要对其进一步解析,以定位真实视图,这就是视图解析器的作用。而视图则是把从控制器查询回来的数据模型进行渲染,以显示给请求者查看。

    2.2 视图

    • 在向控制器发起请求之后,SpringMvc控制器获取到了对应的数据,绑定到数据模型中,那么视图就可以展示数据模型的信息了。
    • 请求处理方法执行完成后,最终返回一个 ModelAndView 对象。对于那些返回 String,View 或 ModeMap 等类型的 处理方法,Spring MVC 也会在内部将它们装配成一个 ModelAndView 对象,它包含了逻辑名和模型对象的视图
    • 为了满足各种需求,SpringMvc中定义了多种视图,只是常用的不多,有几个而已。
    • 下面来看一下核心接口View的源码
        在这里插入图片描述
    • 里面的getContentType方法和render方法很重要。getContentType表示返回一个字符串,标明给用户什么类型的文件响应,可以是HTML,json,PDF等,而render方法则是一个渲染视图的方法,通过它就可以渲染视图了。其中,Model是其模型数据,HTTP请求对象和响应对象用于处理HTTP请求的各类问题。
    • 当控制器返回ModelAndView的时候,视图解析器就会解析它,然后将模型数据传递给render方法,这样就能够渲染视图了。SpringMvc中实现视图的类有很多,比如Jstl视图JstlView,Json视图MappingJackson2JsonView等等,通过这些具体视图的render方法,SpringMvc就可以将模型数据渲染称为各类视图,来满足各种需求。
    • 下图为SpringMvc主要视图类的结构图
        在这里插入图片描述
    • 这只是画了一部分比较常用的,最常用的是JstlView,InternalResourceView和MappingJackson2JSONView等这几种。并且JstlView和InternalResourceView是父子关系,可以看成一类,主要是为jsp的渲染服务的,可以使用jstl标签库,也可以使用SpringMvc提供的标签库。
    • 视图又分为逻辑视图和非逻辑视图。比如MappingJackson2JsonView是一个非逻辑视图,它的目的就是将数据模型转换为一个JSON视图,展现给用户,无需对视图名字再进行下一步的解析。下面来看个示例
        在使用的时候需要额外添加Jackson的jar包,资料:链接:https://pan.baidu.com/s/1mz_Kp1kd70kvzuONHdQ3qw 提取码:fvk9
        在这里插入图片描述
        在这里插入图片描述
        在这里插入图片描述
    • 通过ModelAndView中的setView方法可以指定具体的视图类型,由于设置的MappingJackson2JsonView视图是非逻辑视图,所以在没有视图解析器的情况下也可以进行渲染,最终将绑定的模型数据转换为Json数据
    • 下面来看一个逻辑视图InternalResourceView,对于逻辑视图而言,必须要要一个视图解析器,下面是我的项目中使用的视图解析器,配置在springmvc.xml中
        在这里插入图片描述
    • 上面是使用配置文件xml的形式来配置,其实使用Java代码配置也可以,但是我个人不常用,二者殊途同归,都是要创建一个视图解析器,通过前缀和后缀加上视图名称就能找到对应的Jsp文件,然后把模型数据渲染到jsp文件中,这样便能展现视图给用户了。
    • 了解了大概解析过程,现在开始研究一下视图解析器了,不了解它,那就没法深刻理解具体视图是怎么做关联对应的。

    2.3 视图解析器

    • 对于非逻辑视图而言是不需要用视图解析器进行解析的,比如MappingJackson2JsonView,它的含义就是把当前数据模型转换为json,并不需要对视图逻辑名称进行转换。但是对于逻辑视图而言把视图名称转换成逻辑视图则是必备过程,InternalResourceView就是这样一个视图。在配置文件中配置它以后就会加载到SpringMvc的视图解析器列表中,当返回ModelAndView的时候,SpringMvc就会在视图解析器列表中查找,找到对应的视图解析器进行解析视图。
    • 先看一下视图解析器顶层接口ViewResolver的源码
        在这里插入图片描述
    • 是不是很简单哈哈,这里面只有一个对视图进行解析的方法resolveViewName的定义,里面的参数有两个,viewName表示视图名称,locale用于国际化,这也说明了SpringMvc是支持国际化的。
    • 下面来看一下SpringMvc中配置的视图解析器的主要结构图
        在这里插入图片描述
    • 上图中描述了SpringMvc自带的一部分视图解析器,它能够解析各种各样需要逻辑视图名称。之前都是默认配置了InternalResourceViewResolver的,但是可以发现控制器中处理方法中有时并没有返回一个ModelAndView,而是直接返回一个字符串,它也可以渲染视图,因为底层视图解析器生成了对应的视图。
        在这里插入图片描述
    • 对于上面的代码,因为配置了InternalResourceViewR额搜绿二,通过springMvc的作用,它能够生成JstlView视图。系统也会绑定视图和模型数据到一个ModelAndView中,然后视图解析器根据视图的名称,找到对应的视图资源,这就是视图解析器的作用。
    展开全文
  • SpringMVC——视图视图解析器

    千次阅读 2019-07-19 16:10:47
     SpringMVC用于处理视图最重要的两个接口是ViewResolver(视图解析器)和View(视图)。ViewResolver的主要作用是把一个逻辑上的视图名解析为一个真正的视图,解析的时候会向视图中填充模型数据。SpringMVC中用于把视图...
  • 二、视图概述 1.为什么使用视图? 2.视图的理解 3.视图的优点 1. 操作简单 2. 减少数据冗余 3. 数据安全 4. 适应灵活多变的需求 5. 能够分解复杂的查询逻辑 4.视图的不足 三、创建视图 准备工作 1.创建...
  • web视图改成页面视图Placing a WebView inside a Scrollview can be problematic. The problem you would immediately come across is the WebView mysteriously disappearing. It IS in fact rendered but merely ...
  • PitchPerfect允许用户通过设备麦克风录制声音,然后播放以种不同方式之一调制的声音。 项目 PitchPerfect是Udacity iOS开发人员纳米学位计划的投资组合项目#1。 以下列表包含相关的课程文档: 当前版本 项目提交-...
  • oracle视图详解

    2018-08-03 14:24:40
    Oracle视图详解   一. 视图的定义 视图(view),也称虚表, 不占用物理空间,这个也是相对概念,因为视图本身的定义语句还是要存储在数据字典里的。视图只有逻辑定义。每次使用的时候,只是重新执行SQL。  视图...
  • (不用登录数据库服务器) 3.mysqldump单表备份与恢复 备份: mysqldump –h主机 –uroot –proot 库名 表名 > 路径.sql 说明: 1)“>” 将备份的数据到哪个SQL文件中 “*.sql “ 2)在备份单表时, 注意写法, 库名 ...
  • 在我们真正的使用演示文稿编辑幻灯片的过程中,对幻灯片进行晰、编辑等操使用会需要使用不同的视图,PowerPoint 2013中具体的视图功能如下。一、普通视图(幻灯片预览窗格)普通视图是主要的编辑视图,可用于撰写或...
  • 一,什么是物化视图 物化视图是包括一个查询结果的数据库对象,它是远程数据的的本地副本,或者用来生成基于数据表求和的汇总表。物化视图存储基于远程表的数据,也可以称为快照。 二,作用、 在类似统计功能中,...
  • 识读第三角视图(机械识图)

    千次阅读 2020-11-30 15:25:09
    为了便于了解第三角视图的画法,本章将第三角画法和我们所熟悉的第一角画法做比较,帮助读者掌握第三角视图的识图规律。 1.投影形成的异、同点 如图13-la所示,两个互相垂直相交的投影面,将空间分为四个角,依次...
  • 微信小程序常用视图容器组件

    千次阅读 2022-03-15 22:33:57
    微信小程序常用视图容器组件1、组件概述2、常用的试图容器组件2.1 view2.1.1 案例2.2 scroll-view2.2.1 案例2.3 swiper2.3.1 案例 1、组件概述   组件是视图层基本的组成单元,具备UI风格样式以及特定的功能效果。...
  • 测试开发——flask视图函数与路由 实战重点

    千次阅读 热门讨论 2021-02-23 20:38:19
    flask视图函数与路由一、视图函数与路由 实战重点1.1 一个视图函数可以绑定多个URL地址1.2 视图装饰器应该到最外层1.3所实现的装饰器要返回视图函数的返回值二、动态路由参数 ... 欢迎关注微信公众号:宝藏女孩的...
  • VS Code插件开发教程--树视图+网页视图完整demo+图--2简介四、treeView: 在视图中显示想要的 item五、创建 webView 并嵌入百度页面 简介 你好! 本人为 2019.7 毕业的应届毕业生,目前从事前端工程师的职业。对知识...
  • 一个视图函数,或者简短来说叫做视图,是一个简单的Python函数,它接受web请求,并且返回web响应。响应可以是一张网页的HTML内容,一个重定向,一个404错误,一个XML文档,或者一张图片. . . 是任何东西都可以。无论...
  • 自绘图元到左边和上边之外,部分在内进行拉伸后,拉伸多余的区域无法碰撞 示意图 解决后的目标效果 解决方法 变换之前或之后一定要调用一次prepareGeometryChange(); void RectItemBase::...
  • 索引(聚簇索引和非聚簇索引、回表);视图;存储过程;触发器;分区表
  • Qt 包含一组项目视图类,这些类使用模型/视图框架来管理数据之间的关系以及数据呈现给用户的方式。 模型-视图-控制器 (MVC)设计模式,通常在构建用户界面时使用。 MVC 由三种对象组成。 Model 是应用程序对象 ...
  • 1、理解视图解析 将控制器中请求处理的逻辑和视图中的渲染实现解耦是Spring MVC 的一个重要特性。如果控制器中的方法直接负责产生HTML的话,就很难在不影响请求处理逻辑的前提下,维护和更新视图。控制器方法和...
  • VS Code插件开发教程--树视图+网页视图完整demo+图--3简介、不同 item 显示不同的页面(数据传递: VS code -> html)七、iframe 页面的数据传递指 VS code(iframe -> html -> vscode) 简介 你好! 本人为 ...
  • Oracle 物化视图

    万次阅读 2013-05-05 15:12:56
    近来看到一些文章有关Oracle 物化视图的,整合了下,比较详细,以作memo: 物化视图(Materialized View)在9i以前的版本叫做快照(SNAPSHOT),从9i开始改名叫做物化视图。其实无论是快照还是物化...
  • 文章目录3.7 视图3.7.1 定义视图3.7.2 删除视图3.7.3 查询视图3.7.4 更新视图 3.7 视图 视图,是从一个或几个基本表(或视图)导出的表,它与基本表不同,是一个虚表。数据库中只存放视图的定义,而不存放视图对应的...
  • 在FrameLayout中,这个布局直接在屏幕上开辟出一块空白的区域,所有添加到这个布局中的视图都是以层叠的方式显示,而它会把这些试图默认到这块区域的左上角,第一个添加到布局中视图显示在最底层,最后一个被放在...
  • 文章目录一、概念(Concept)二、基础模型三、动态视图(Dynamic View)3.1 方向(Orientation)3.2 键盘导航和高亮3.3 页眉与页脚(Header and Footer)3.4 网格视图(The GridView)四、代理(Delegate)4.1 动画...
  • 在单元格中放置控件 在单元格中放置控件 setItem:将文本到单元格中 setCellWidget:将控件到单元格中 setStyleSheet设置控件的样式(QSS) 代码: import sys from PyQt5.QtWidgets import * from PyQt5.QtCore ...
  • 计算机图形学视图矩阵推导过程

    千次阅读 2018-04-06 00:59:50
    视图矩阵推导过程(Demo基于WebGL 2.0实现) 一、概述 首先,我们需要了解些概念: 摄像机坐标系或者摄像机空间:物体经摄像机观察后,进入摄像机空间。 视变化,是将世界坐标系下的坐标变化到摄像机坐标系,视...
  • Python Django(二)—— 项目结构、配置简介、路由与视图函数
  • Django Xadmin 官方文档 之七 视图

    千次阅读 2019-01-11 14:38:11
    Django Xadmin 官网上的第七部分, 也是官网的最后一部分, 本部分讲解的是 Xadmin 的视图相关类及其方法。 由于博主英语水平有限, 翻译不足之处, 烦请大神指教。 希望能够帮助挣扎在 Django Xadmin 中的小伙伴们...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 49,628
精华内容 19,851
关键字:

六视图怎么放