Views概念总结

ASP.NET Core MVC 中 Views 的高级应用与实战详解 本文深入探讨ASP.NET Core MVC框架中Views的高级应用技术,主要包括以下核心内容:1. 视图基础:介绍Views在MVC架构中的作用、创建方法及基本结构,强调其数据展示和用户交互功能。2. 数据传递:详细解析ViewBag、ViewData和Model三种数据传递方式的特点与使用场景。3. 视图组织:讲解布局视图和分部视图的使用方法,实现页面结构复用和模块化开发。4. 表单处理:涵盖表单创建、提交和数据验证的全流程实现。5. 高级特性:重点介绍TagHelpers的灵活应用和AJAX异步交互 阅读详情

Views的主要作用:

  • 子视图的排版和管理

  • 绘图和动画Drawing and animation

  • 处理触摸事件Event handling


创建和配置视图

1.通常创建一个nib文件来保存某个视图控制器的整个视图层次,nib文件的根视图表示视图控制器的视图
2.视图的默认初始化方法为initWithFrame,指定了视图的大小和在父视图中的位置。
3.视图必须要添加到window中才能显示,或者添加为某个window中的视图的子视图
  1. <span style="font-size:16px;">CGRect  viewRect = CGRectMake(0, 0, 100, 100);  
  2. UIView* myView = [[UIView alloc] initWithFrame:viewRect];</span>  

设置视图的属性

alpha,hidden,opaque 前两者直接改变视图的透明度,opaque告诉系统视图是否透明
bounds,center,frame,transform 这些属性影响视图的大小和位置,bounds定义了在视图自身坐标系中的可视化区域。transform用来实现旋转和缩放
                  当transform不是identity transform时, frame无效.

autoresizingMask,autoresizesSubviews 第一个属性定义视图如何根据父视图的bounds改变自身大小位置,第二个属性指定是否需要改变子视图

gestureRecognizers,  userInteractionEnabled,  multipleTouchEnabled, exclusiveTouch
第一个属性表示添加到当前视图的gesture recognizer
第二个属性表示视图是否要响应事件,如果设置为no,则用户事件被丢弃
第三个属性如果设置为no,则视图只响应多触摸事件序列的第一个事件,此时window中的其他视图仍然可以响应事件
第四个属性如果设置为yes,视图阻止触摸事件传递给其他的视图

contentMode, contentStretch, contentScaleFactor  
前两个属性用于指定视图内容如何根据视图的大小改变而改变。
  1. <span style="font-size:16px;">typedef enum {  
  2.    UIViewContentModeScaleToFill,  
  3.    UIViewContentModeScaleAspectFit,  
  4.    UIViewContentModeScaleAspectFill,  
  5.    UIViewContentModeRedraw,  
  6.    UIViewContentModeCenter,  
  7.    UIViewContentModeTop,  
  8.    UIViewContentModeBottom,  
  9.    UIViewContentModeLeft,  
  10.    UIViewContentModeRight,  
  11.    UIViewContentModeTopLeft,  
  12.    UIViewContentModeTopRight,  
  13.    UIViewContentModeBottomLeft,  
  14.    UIViewContentModeBottomRight,  
  15. } UIViewContentMode;</span>  

backgroundColor, subviews, drawRect:, layer
第一个属性用来改变视图的背景色
第二个属性而只读的数组,包含了已添加到视图的子视图
第三个方法用于自定义绘制视图内容,当需要绘制视图内容时重载

Tagging Views
视图类包含一个tag属性,你可以给每个视图对象指定一个整数值。你可以通过该值在运行时查找视图。tag的默认值为0
使用viewWithTag:方法来查找视图

创建和管理视图层次


添加和删除子视图

1.如果你通过代码创建视图,使用一下方法

2.当你添加子视图的时候,子视图的frame属性表示其在父视图中的大小和位置。子视图位于父视图之外的部分不会被自动剪裁,需要设置父视图的clipsToBounds属性为YES

3.父视图自动retain子视图,当子视图被添加到父视图后就可以安全释放。removeFromSuperview方法在移除之前自动释放子视图

4.当你添加子视图时,UIKit会通知子视图和父视图

willMoveToSuperview:, willMoveToWindow:, willRemoveSubview:,didAddSubview:, didMoveToSuperview, or didMoveToWindow

5.superView表示接收者的父视图,window表示包含接收者的window。因为根视图没有父视图,其superview属性为nil,通常window为视图层次的根视图

6.你可以通过设置hidden属性为YES,或者将alpha设置为0来隐藏视图,被隐藏的视图不会接受触摸事件,但是要参与autoresizing和其他的排版。如果一个视图为first responder,那么隐藏之前应该resign。如果要使用动画隐藏视图,那么修改alpha属性


在视图层次中定位视图

1.有两种方法来定位视图

  • 在合适位置存贮相关视图的指针.

  • 给视图添加tap,使用viewWithTag方法来获取视图

视图的变换,缩放,旋转

1.UIView的transform属性包含了一个CGAffineTransform结构,这个属性默认设置为identity transform,这个值不会改变视图外观
2.当视图应用多个变换时,给CGAffineTransform赋值的顺序决定了变换的顺序,每个变换取决与视图的中心点
  1. <span style="font-size:16px;">// M_PI/4.0 is one quarter of a half circle, or 45 degrees.  
  2. CGAffineTransform xform = CGAffineTransformMakeRotation(M_PI/4.0);  
  3. self.view.transform = xform;</span>  

视图层次中的坐标变换

1.触摸事件中包含的在window坐标系中发生的位置,可以使用UIView的方法来进行转换

2.除了UIView的方法,你也可以使用UIWindow类的方法进行转换


在运行时修改视图

1.当视图的大小变化时,其子视图的大小和位置均发生变化
2.父视图的autoresizesSubviews属性决定是否要改变子视图大小,如果设置为YES,那么父视图根据子视图的autoresizingMask属性来改变子视图

自定义视图

1.创建自定义视图的清单

初始化视图

1.使用代码创建视图时,重载initWithFrame方法

  1. - (id)initWithFrame:(CGRect)aRect {  
  2.     self = [super initWithFrame:aRect];  
  3.     if (self) {  
  4.           // setup the initial properties of the view  
  5.           ...  
  6.        }  
  7.     return self;  
  8. }  

2.如果你是从nib文件中创建视图,那么nib载入代码会调用initWithCoder方法,此时重载此方法来初始化。你同样可以使用awakeFromNib方法来添加其他的初始化信息

实现绘制代码

1.重载drawRect方法来绘制视图内容

2.在你条用此方法之前,UIKit会配置一个基本的绘图环境给视图。

  1. Listing 3-5  A drawing method  
  2. - (void)drawRect:(CGRect)rect {  
  3.     CGContextRef context = UIGraphicsGetCurrentContext();  
  4.     CGRect    myFrame = self.bounds;  
  5.    
  6.     // Set the line width to 10 and inset the rectangle by  
  7.     // 5 pixels on all sides to compensate for the wider line.  
  8.     CGContextSetLineWidth(context, 10);  
  9.     CGRectInset(myFrame, 5, 5);  
  10.    
  11.     [[UIColor redColor] set];  
  12.     UIRectFrame(myFrame);  
  13. }  

响应事件


1.视图类是responder类的子类,能够接受触摸事件。当触摸事件发生时,window将该事件发送到视图中

2.视图可以使用 gesture recognizers to detect taps, swipes, pinches, and other types of common touch-related gestures

3.如果需要直接处理事件,则重载一下方法

4.视图默认一次只响应一个触摸,如果你希望追踪多手势,需要指定视图的multipleTouchEnabled属性为YES

5.一些视图,lable和image视图,默认禁止处理触摸事件,如果需要处理触摸事件,设置userInteractionEnabled

6.UIView的动画方法通常在动画进行的过程中禁止触摸事件


原文

在带有Intel Arc GPU的Windows上安装IPEX-LLM 本文将介绍在 Intel Arc GPU 环境下安装 IPEX-LLM。 阅读详情

相关推荐

vit的cam和注意力图: VIT模型的可解释性

VIT的热力图怎么画

YI_SHU_JIA的博客 1万+

java中view是什么_深入理解Android中View

文章目录[隐藏]这回我们是深入到View内部,去研究View,去了解View的工作,抛弃其他因素,以便为以后能灵活的使用自定义空间打下一定的基础。希望有志同道合的朋友一起来探讨,深入Android内部,深入理解Android。一、View是什么?View是什么了,每个人都有自己的理解。在Android的官方文档中是这样描述的:这个类表示了用户界面的基本构建模块。一个View占用了屏幕上的一个矩形区...

weixin_29164497的博客 6203

PySide6多线程避坑大全:信号槽崩溃、内存泄漏,这些雷我都帮你踩过了

本文深入探讨了PySide6多线程开发中的常见问题与解决方案,包括信号槽崩溃、内存泄漏等典型陷阱。通过实战案例和优化策略,帮助开发者避免UI线程操作错误、有效管理资源生命周期,并提升跨线程通信的可靠性。特别针对PySide6多线程特性,提供了线程安全日志、死锁检测等实用调试技巧。

weixin_32288959的博客 396

关于View/ViewController文件中常见的SetUpNavigation()/SetUpViews()/SetUpConstraint()

首先这三者是用来配置布局的 第一个是设置导航栏 第二个是页面主体的设置 如果页面主体分为几个session,可以继续拆分下去,比如: private func setUpViews() { view.backgroundColor = .white view.addSubview(scrollView) //not sure if we need scroll view or not //implement of view setUpCurr

Tech in Pieces 685

Ventoy引导自定义菜单配置详解:手把手教你用ventoy_grub.cfg启动硬盘里的Manjaro

本文详细解析了Ventoy引导自定义菜单配置方法,重点介绍如何通过ventoy_grub.cfg文件启动硬盘中的Manjaro系统。从Ventoy与GRUB2的协作原理到具体配置步骤,包括分区布局设计、关键参数解析及常见问题解决方案,帮助用户实现多系统引导的灵活管理。

weixin_28738165的博客 299

Win11安装Office2021

windows11安装office2021。

1万+

微信小程序把玩(八)view组件

刚看到这个效果的时候还真是和ReactNative的效果一致,属性也基本的一样主要属性:flex-direction: 主要两个特性”row”横向排列”column”纵向排列justify-content 主轴的对齐方式(如果flex-direction为row则主轴就是水平方向) 可选属性 (‘flex-start’, ‘flex-end’, ‘center’, ‘space-between’,

FUCK 3万+

CST 2023安装避坑指南:从下载到破解的完整流程(附常见报错解决方案)

本文提供CST 2023三维全波电磁场仿真软件的完整安装指南,涵盖从下载到破解的全流程,并附常见报错解决方案。详细解析安装步骤、许可证配置优化及高频问题诊断,帮助用户快速部署并优化软件性能,适用于射频电路设计、天线优化等场景。

7z8x2c4v6b9的博客 656

[原创](Modern C++)现代C++的关键性概念: 范围(Ranges)与视图(Views)

在C++20引入了范围(Ranges)和视图(Views)模块, 目标是优化迭代器模型并提高小型实例对应的处理性能. 范围(Ranges)作为一个重要的特性被引入, 它彻底改变了处理序列数据的方式. 与R范围(Ranges)密切相关的视图(Views), 则进一步扩展了这一特性, 提供了一种轻量级且灵活的数据操作方式.

其实我不是代码教父,我只是猪头三 876

机器人控制算法九之 位姿描述与空间变换

机器人控制算法九之 位姿描述与空间变换

yohnyang的博客 1029

C++11、C++14 和 C++17 标准新特性详解

特性C++11C++14C++17auto类型推导✅范围 for 循环✅Lambda 表达式✅✅✅智能指针✅移动语义✅nullptr✅统一初始化{}✅✅constexpr✅✅✅✅数字分隔符✅结构化绑定✅✅✅文件系统库✅。

h a 6 6 6 c k 为 你解决复杂难题! 439

R语言【taxlist】——taxon_views(),add_view():分类列表中概念视图的管理。

检索或替换类taxlist对象中的槽taxonViews。 Arguments 参数【taxlist】:一个 taxlist 对象。参数【...】:在方法之间传递的进一步参数。参数【value】:类data.frame的对象,其中包含用于定义taxlist中包含的分类单元概念的限制的引用。参数【taxonViews】:将在'taxlist'中插入分类单元视图的数据框架。分类单元视图在分类列表对象中指出确定各自分类单元概念界限的引用。在添加新概念时(参见add_concept()),相应的引用可能还没有

whitedrogen的博客 1423

GD32F4xx MCU ADC+DMA 多通道采样

1、GD32F4xx ADC GD32F4xx 的12位ADC是一种采用逐次逼近方式的模拟数字转换器。 1.1 主要特征 可配置12位、10位、8位、6位分辨率; ADC采样率:12位分辨率为2.6MSPs,10位分辨率为3.0 MSPs。分辨率越低,转换越快; PS: MSPs (模拟混合信号转换速率),是指完成1次从模拟转换到数字的AD转换所需的时间的倒数。常用单位是ksps和Msps,表示每秒采样(千)/(百万)次(kilo / Million Samples per Second)。 1msps

madao1234的博客 8117

Chromium GN目标指南 - views_examples简介(五)

Views 是 Chromium 中用于构建用户界面的框架,它提供了一套丰富的控件(Widgets)、布局管理器(Layout Managers)和事件处理机制,用于创建跨平台的、高效的图形用户界面。在后续的文章中,我们将更深入地探讨 Views 框架的各个方面,例如控件、布局、事件处理、主题和样式等,帮助你更好地掌握 Chromium 的 UI 开发技术。运行后,你将看到一个名为 "Views Examples" 的窗口,其中包含了一系列标签页,每个标签页展示了一个或多个 Views 控件的使用示例。

守城小轩的技术窝棚 1718

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

什麼是 views

什麼是 views 相比cck, views 的概念簡單得多 但使用複雜得多 一個Drupal 的site, 由很多很多nodes 組成 但很多時候, 一個頁面總不會只有一個node 例如首頁, 當然要有列表列出最新的nodes 將nodes 用某條件 (如更新順序排列) 組織起來就是views 的工作 但組織nodes 的方法何其多 而且views 又不知何

myas0735的专栏 1340

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

C++ 中 Views 的详细讲解

Views 是 Ranges 库的核心部分,是一种轻量级的、非拥有的范围(range)抽象,用于对数据序列进行惰性(lazy)操作和转换,而不修改底层数据。以下是对 C++ views 的详细讲解,包括其概念、设计原则、常见视图类型、使用方式、优势、注意事项以及示例。讲解基于 C++20 标准(以及后续小更新,如 C++23 的扩展),假设你有基本的 C++ 知识(如容器、迭代器和 lambda)。View 是一个特殊的范围(range),它不存储数据,而是提供对底层范围的“视图”或“窗口”。

蜗牛沐雨 1470

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

6 ranges and views

自第一个C++ 标准以来,处理容器和其他序列元素的方法一直是使用迭代器,来确定第一个元素的位置(开始) 和最后一个元素后面的位置(结束)。对范围进行操作的算法通常使用两个参数来处理容器的所有元素,容器提供了begin() 和end() 等函数来提供这些参数。C++20 提供了一种处理范围的新方法,支持将范围和子范围定义和使用为单个对象,例如:将其作为一个整体作为单个参数传递,而不是处理两个迭代器。这种改变听起来很简单,会产生很多后果。

janeqi1987的专栏 354

Brief introduction into Materialized Views

Brief introduction into Materialized Views<br />This week, I am teaching an Oracle Database 11g Data Warehouse Administration course in Munich. One of the focus areas of that course are Materialized Views, and I have developed some examples for that course

Oracle大将军 441

C++的std--ranges中的表达处理

例如,views::filter和views::transform可以组合成一条流畅的处理流水线。C++20引入的std::ranges库彻底改变了开发者处理数据序列的方式,它将函数式编程与现代C++的模板元编程相结合,提供了更简洁、更安全的范围操作。本文将深入探讨std::ranges中表达处理的核心机制,展示其如何通过声明式语法实现高效的数据转换与过滤。配合范围工厂如views::iota,可以构建出内存效率极高的数据处理流程,避免传统迭代器模式的内存开销。约束与概念:类型安全的保障。

rbzheg_449的博客 17

Note 741478 - FAQ: Materialized views

SAP Link 741478 Version 7 Release Status Released for Customer Released on 2010-11-30 12:05:35 Priority Recommendations/additional info Category FAQ Prim...

aebe49167的博客 246

C++23 views::slide (P2442R1) 深入解析

简单来说,Range就是一种可以遍历的序列,你可以把它想象成更智能、更灵活的数组或者容器。C++20引入了Ranges这个概念,让我们可以更方便地操作这些序列。例如,我们可以使用Ranges来过滤、转换、拼接序列等。和是C++23引入的新特性。slide_view是一个范围适配器,它接受一个view和一个数字n,并产生一个视图,其第m个元素(一个“窗口”)是原始视图的第m个到第个元素的视图。令s如果s >= n,则为s - n + 1;否则为0,并且生成的视图为空。表示一个。给定子表达式e和n。

码事漫谈 1352
上一篇: iOS转屏
下一篇: UIView 中的控件事件穿透 Passthrough 的实现
focusjava
博客等级 码龄14年 127粉丝 528原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值