进击的KFC:UI(一)UIView及其子类

2023-12-22 08:38
文章标签 ui uiview kfc 进击 子类

本文主要是介绍进击的KFC:UI(一)UIView及其子类,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

pragma mark — UIView


UIView 代表一个矩形区域
创建一个视图的4步骤:
1.初始化: 起始点从(屏幕的)父视图左上角开始计算,为(0,0)点 (必须记住)
UIView *view = [[UIView alloc] initWithFrame:CGRect(100,100,200,100)];
2.设置一些属性
view.backgroundColor = [UIColor redColor];
3.显示视图
[self.window addSubView:view];
view.tag = 100; // 设置tag标记
4.释放内存
[view release];UIView的一些方法:
1.取出所有的子视图:
NSArray *subView = [self.window subViews];
2.取出视图view的中心点(以0,0原点为基点)
CGPoint center = view.center
NSLog(@“%@“,NSStringFromCGPoint(center)); // 把一个点转成字符串
// 更改视图的位置方法:
// 1.更改frame
// 2.更改中心点
3.bounds边界,子视图坐标系的原点
// 总结:改变父视图的bounds 像但与改变子视图的坐标系(也就是原点坐标)
// 父视图是不变的,只是改变子视图的位置
view.bounds = CGRectMake(0,30,200,100);
bounds 改的是父视图view,影响的是子视图view1.    // 或者说:改变父视图的bounds,控制子视图的坐标系,因为子视图是从父视图的原点(0,0)开始计算坐标的,可是现在父视图的原点通过bounds改变了,子视图所遵循的(0,0)点位置变了,按上面修改的数据,父视图之前的(0,0)变成了(0,30),那么子视图遵循的点(0,0)在(0,30)的上方,所以view1上移
创建一个子视图,添加到view上
步骤同上:UIView *view1 =[ [UIView alloc]initWithFrame:(0,0,50,50)];
view1.backgroundColor = [UIColor yellowColor];
[view addSubView:view1];// tips:子视图的起始位置 要根据父视图的左上角(0,0)点开始计算坐标// 添加子视图注意:必须把子视图添加到 父视图的范围之内,否则无法交互!

pragma mark — 视图重要属性

1.隐藏视图:如果,父视图被隐藏,那么父视图上的所有子视图,也会被隐藏
view.hidden = YES;
2. 透明属性:如果,父视图透明度发生变化,那么父视图上面的所有子视图,也会发生变化
view.alpha = 0.2;
3.取出某一子视图的 父视图
UIView *superView = view1.superView;
4. 获取本视图的所有⼦视图
NSArray *subView = view.subViews;
5. 给视图添加标记,被加完标记的视图可以通过viewWithTag:⽅法被取出来// 通过tag值取出视图// 注意:tag 不能给0(因为window是0);
UIView *tagView = [self.window viewWithTag:100];

pragma mark — 管理视图层次

// 把某一个子视图 放到最前面[self.window bringSubViewToFront:view1];
//把某一个子视图 放到最后面[self.window sendSubViewToBack:view1];
// 交换两个子视图的位置[self.window exchangeSubViewAtIndex:0 withSubViewAtIndex:1];
// 把view1从⽗视图上移除[view1 removeFromSuperView];

pragma mark — UILabel

// 显示文本的视图UILabel,继承UIView
// 初始化
UILabel *label =[ [UILabel alloc]initWithFrame:CGRectMake:(10,30,100,300)];
label.backgroundColor = [UIColor redColor];
label.text = @“wosdanvjdlfj odpsadfl opafon dsgoaf "
label.font = [UIFont systemFontOfSize:19]; // 设置字体大小
label.textAlignment = NSTextAlignmentLeft; // 左对齐,右对齐,居中
label.NumberOfLine = 0;  // 你想显示几行就填几,-1和0表示完全显示
label.lineBreakMode = NSLineBreakByTruncatingMiddle;//设置断行模式label.shadowColor = [UIColor redColor]; // 设置阴影颜色label.shadowOffset = CGSizeMake(2, 1); // 调整阴影的位置// 获取系统所有安装的字体NSArray *fountArray = [UIFont familyNames];NSLog(@"%@ %ld",fountArray,[fountArray count]);// 设置字体和字号:label.font = [UIFont fontWithName:fountArray[71] size:20];

小节:
UIView是所有可视化控件的基类。
UILabel是具有特定外观特定功能的视图。
UILabel侧重于⽂本的呈现。

pragma mark — 总结

App靠window来呈现内容,⼀个程序⼀般只创建⼀个window。
App中能看到的元素,都是UIView及其⼦类。
UIView作为所有可视化控件的BaseClass,提供了许多属性和⽅法。
显⽰效果控制(frame、alpha等)、视图添加和移除(addSubview:
等)、视图层次调整(bringSubviewToFront:等)等。
UILabel属于具体的视图,有⾃⼰的侧重点

这篇关于进击的KFC:UI(一)UIView及其子类的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/523304

相关文章

VS配置好Qt环境之后但无法打开ui界面的问题解决

《VS配置好Qt环境之后但无法打开ui界面的问题解决》本文主要介绍了VS配置好Qt环境之后但无法打开ui界面的问题解决,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要... 目UKeLvb录找到Qt安装目录中designer.UKeLvBexe的路径找到vs中的解决方案资源

QT6中绘制UI的两种方法详解与示例代码

《QT6中绘制UI的两种方法详解与示例代码》Qt6提供了两种主要的UI绘制技术:​​QML(QtMeta-ObjectLanguage)​​和​​C++Widgets​​,这两种技术各有优势,适用于不... 目录一、QML 技术详解1.1 QML 简介1.2 QML 的核心概念1.3 QML 示例:简单按钮

在 PyQt 加载 UI 三种常见方法

《在PyQt加载UI三种常见方法》在PyQt中,加载UI文件通常指的是使用QtDesigner设计的.ui文件,并将其转换为Python代码,以便在PyQt应用程序中使用,这篇文章给大家介绍在... 目录方法一:使用 uic 模块动态加载 (不推荐用于大型项目)方法二:将 UI 文件编译为 python 模

Vue项目中Element UI组件未注册的问题原因及解决方法

《Vue项目中ElementUI组件未注册的问题原因及解决方法》在Vue项目中使用ElementUI组件库时,开发者可能会遇到一些常见问题,例如组件未正确注册导致的警告或错误,本文将详细探讨这些问题... 目录引言一、问题背景1.1 错误信息分析1.2 问题原因二、解决方法2.1 全局引入 Element

Python中的可视化设计与UI界面实现

《Python中的可视化设计与UI界面实现》本文介绍了如何使用Python创建用户界面(UI),包括使用Tkinter、PyQt、Kivy等库进行基本窗口、动态图表和动画效果的实现,通过示例代码,展示... 目录从像素到界面:python带你玩转UI设计示例:使用Tkinter创建一个简单的窗口绘图魔法:用

element-ui下拉输入框+resetFields无法回显的问题解决

《element-ui下拉输入框+resetFields无法回显的问题解决》本文主要介绍了在使用ElementUI的下拉输入框时,点击重置按钮后输入框无法回显数据的问题,具有一定的参考价值,感兴趣的... 目录描述原因问题重现解决方案方法一方法二总结描述第一次进入页面,不做任何操作,点击重置按钮,再进行下

HarmonyOS学习(七)——UI(五)常用布局总结

自适应布局 1.1、线性布局(LinearLayout) 通过线性容器Row和Column实现线性布局。Column容器内的子组件按照垂直方向排列,Row组件中的子组件按照水平方向排列。 属性说明space通过space参数设置主轴上子组件的间距,达到各子组件在排列上的等间距效果alignItems设置子组件在交叉轴上的对齐方式,且在各类尺寸屏幕上表现一致,其中交叉轴为垂直时,取值为Vert

Golang GUI入门——andlabs ui

官方不提供gui标准库,只好寻求第三方库。 https://github.com/google/gxui 这个gui库是谷歌内部人员提供的,并不是谷歌官方出品,现在停止维护,只好作罢。 第三方gui库 找了好多,也比较了好多,最终决定使用的是还是 https://github.com/andlabs/ui 相信golang gui还会发展的更好,期待更优秀的gui库 由于andlabs

c++11工厂子类实现自注册的两种方法

文章目录 一、产品类构建1. 猫基类与各品种猫子类2.狗基类与各品种狗子类 二、工厂类构建三、客户端使用switch-case实现调用不同工厂子类四、自注册方法一:公开注册函数显式注册五、自注册方法二:构造函数隐形注册总结 一、产品类构建 1. 猫基类与各品种猫子类 class Cat {public:virtual void Printer() = 0;};class

获取所有classpath指定包下类的所有子类

1.问题 开发过程中,有时需要找到所有classpath下,特定包下某个类的所有子类,如何做到? 2. 实现 比较常见的解决方案是自己遍历目录,查找所有.class文件。 下面这个方法使用spring工具类实现,简化过程,不再需要自己遍历目录 /*** 获取在指定包下某个class的所有非抽象子类** @param parentClass 父类* @param packagePat