【iOS】UI学习(一)

news2024/11/15 13:24:37

UI学习(一)

  • UILabel
  • UIButton
    • UIButton事件
  • UIView
    • UIView对象的隐藏
    • UIView的层级关系
  • UIWindow
  • UIViewController
    • 定时器与视图对象
  • UISwitch

UILabel

UILabel是一种可以显示在屏幕上,显示文字的一种UI。
下面使用代码来演示UILabel的功能

@implementation ViewController

- (void)createUI
{
    UILabel* label = [[UILabel alloc] init];
    //显示的文字
    label.text = @"燕子,没有你我怎么活啊";
    //label显示的位置
    label.frame = CGRectMake(10, 300, 350, 200);
    //label的背景颜色
    label.backgroundColor = [UIColor greenColor];
    //整个屏幕的背景颜色
    self.view.backgroundColor = [UIColor redColor];
    //将label显示在屏幕上
    [self.view addSubview:label];
    //label中文字的大小,标准大小34
    label.font = [UIFont systemFontOfSize:34];
    //label中文字阴影的颜色
    label.shadowColor = [UIColor grayColor];
    //阴影的偏移位置
    label.shadowOffset = CGSizeMake(3, 0);
    //label中文字显示的行数,当等于0时,系统自行判断显示多少行合适
    label.numberOfLines = 0;
    //label中文字的颜色
    label.textColor = [UIColor whiteColor];
    //默认文字在label中靠左显示,这里将文字改为在label中间显示
    label.textAlignment = NSTextAlignmentCenter;
    
}

- (void)viewDidLoad {
    [super viewDidLoad];
    // Do any additional setup after loading the view.
    [self createUI];
}

@end

CGRectMake(CGFloat x, CGFloat y, CGFloat width, CGFloat height):返回了一个结构体CGRect,GRect结构在屏幕上定义了一个矩形,它包含和大小。
它是用来定义一个矩形的,CGFloat x是对应屏幕的横向(x坐标), CGFloat y对应就是纵向(y坐标)。这里注意一点,描点是从屏幕的左上方开始的。
NSTextAlignmentLeft/Center/Right :文字靠左、居中、靠右。

效果图
在这里插入图片描述

UIButton

@implementation ViewController

-(void) createUIRectButton
{
    UIButton* btn = [UIButton buttonWithType:UIButtonTypeRoundedRect];
    btn.frame = CGRectMake(20, 300, 300, 50);
    btn.backgroundColor = [UIColor greenColor];
    //向按钮普通状态添加文字
    [btn setTitle:@"按钮01" forState:UIControlStateNormal];
    //向按钮高亮状态提供文字
    [btn setTitle:@"按钮01已按下" forState:UIControlStateHighlighted];
    //设置按钮文字普通状态的颜色
    [btn setTitleColor:[UIColor blackColor] forState:UIControlStateNormal];
    //设置按钮高亮状态文字的颜色
    [btn setTitleColor:[UIColor redColor] forState:UIControlStateHighlighted];
    //设置文字的字体大小
    btn.titleLabel.font = [UIFont systemFontOfSize:24];
    //下面又定义了一个按钮
    UIButton* btn2 = [UIButton buttonWithType:UIButtonTypeRoundedRect];
    btn2.frame = CGRectMake(50, 150, 300, 50);
    btn2.backgroundColor = [UIColor brownColor];
    [btn2 setTitle:@"按钮02" forState:UIControlStateNormal];
    [btn2 setTitle:@"按钮02已按下" forState:UIControlStateHighlighted];
    [btn2 setTitleColor:[UIColor blackColor] forState:UIControlStateNormal];
    [btn2 setTitleColor:[UIColor redColor] forState:UIControlStateHighlighted];
    btn2.titleLabel.font = [UIFont systemFontOfSize:24];
    btn.tag = 123;btn2.tag = 321;
    //UIButton事件
    [btn addTarget:self action:@selector(action01:) forControlEvents:UIControlEventTouchUpInside];
    [btn2 addTarget:self action:@selector(action01:) forControlEvents:UIControlEventTouchUpInside];
    [self.view addSubview:btn];
    [self.view addSubview:btn2]
}

-(void)action01:(UIButton*) btn
{
    if(btn.tag == 123){
        NSLog(@"玛卡巴卡");
    } else if(btn.tag == 321){
        NSLog(@"汤姆布利波");
    }
}

-(void)creatBtn
{
    UIButton* btnp = [UIButton buttonWithType:UIButtonTypeCustom];
    //UIButton* btno1 = [UIButton buttonWithType:UIButtonTypeCustom];
    btnp.frame = CGRectMake(20, 400, 400, 400);
    //加载两张图片,imageNamed后是图片名,要加图片类型
    UIImage* ima1 = [UIImage imageNamed:@"im1.jpg"];
    UIImage* ima2 = [UIImage imageNamed:@"im2.jpg"];
    //为图片按钮设置当状态不同呈现的图片
    [btnp setImage:ima1 forState:UIControlStateNormal];
    [btnp setImage:ima2 forState:UIControlStateHighlighted];
    [self.view addSubview:btnp];
    //UIButton事件
    [btn addTarget:self action:@selector(action01:) forControlEvents:UIControlEventTouchUpInside];
    
}

-(void) action02
{
    NSLog(@"Don't fukin touch it");
}


- (void)viewDidLoad {
    [super viewDidLoad];
    // Do any additional setup after loading the view.
    [self createUIRectButton];
    [self creatBtn];
}


@end

效果图
在这里插入图片描述

UIButton事件结果:
在这里插入图片描述

UIButton事件

  • addTarget:selfaction:@selector(action02)forControlEvents:UIControlEventTouchUpInside]:向按钮添加事件的函数,当函数满足第三处要求时,执行第二处的方法。
  • UIControlEventTouchUplnside:当目标在控件内部结束触摸屏幕并松开时(在按钮范围内),会触发该事件。
  • UIControlEventTouchUpOutside:当目标在控件内部结束触摸屏幕并松开时(在按钮范围外结束),会触发该事件。
  • UIControlEventTouchDown:当目标在控件内部开始触摸屏幕(按钮)时,触发该事件。
  • 可以一个事件控制几个按钮,例如程序中的玛卡巴卡和汤姆布利波,这里为了区分两个按钮,使用btn.tag区分两个按钮,也可以一个按钮触发多个事件。

UIView

UIView

  • 是iOS的视图对象
  • 是所有显示在屏幕上的基础类。
  • 所有显示在屏幕上的对象,都继承于UIView
  • UIView有背景颜色,矩形对象,有层级关系

示例程序

@implementation ViewController

-(void) create
{
    //创建一个UIView对象
    UIView* view = [[UIView alloc] init];
    view.frame = CGRectMake(80, 200, 100, 100);
    view.backgroundColor = [UIColor redColor];
    //将视图做为父视图的子视图管理起来
    [self.view addSubview:view];
    //view1.backgroundColor = [UIColor greenColor];
    //[self.view addSubview:view1];
}

- (void)viewDidLoad {
    [super viewDidLoad];
    // Do any additional setup after loading the view.
    [self create];
}


@end

效果图
在这里插入图片描述

UIView对象的隐藏

    view.hidden = NO;//YES即为隐藏视图,NO反之
    view1.alpha = .5;//透明度,1为完全不透明,0为完全透明
    view.opaque = NO;//设置是否显示不透明
   [view1 removeFromSuperview];//

上面是四种隐藏UIView对象的方法:

  • hidden:YES时即为隐藏视图,NO反之(默认为NO)。
  • alpha: 设置透明度,1为完全不透明,0为完全透明,半透明时会显示父类对象的底色。
  • removeSuperview:将自己从父类视图的管理中删除掉,也就不会显示在屏幕上

UIView的层级关系

示范程序

@implementation ViewController

-(void) create
{
    UIView* view = [[UIView alloc] init];
    view.frame = CGRectMake(100, 100, 100, 100);
    view.backgroundColor = [UIColor redColor];
    UIView* view1 = [[UIView alloc] init];
    view1.frame = CGRectMake(125, 125, 100, 100);
    view1.backgroundColor = [UIColor greenColor];
    UIView* view2 = [[UIView alloc] init];
    view2.frame = CGRectMake(150, 150, 100, 100);
    view2.backgroundColor = [UIColor blueColor];
    //谁先被添加谁先绘制
    [self.view addSubview:view];
    [self.view addSubview:view1];
    [self.view addSubview:view2];
    //将某一个视图调整到最前面来
    [self.view bringSubviewToFront:view];
    //把某一个调整到最后
    [self.view sendSubviewToBack:view];
    //subviews是管理self.view的子视图的数组
    UIView* viewfront = self.view.subviews[2];
    UIView* viewback = self.view.subviews[0];
    if(viewfront == view2) {
        NSLog(@"相等");
    }
}

- (void)viewDidLoad {
    [super viewDidLoad];
    // Do any additional setup after loading the view.
    [self create];
}
  • 当层级重叠时,谁先被添加就先绘制谁
  • bringSubviewToFront:把某个层级移动最上层。
  • sendSubviewToBack把某个层级移到最下层。
  • subviews管理self.view的子视图的数组。

运行结果在这里插入图片描述
在这里插入图片描述

UIWindow

注意:
老版本UIWindow的代码是写在“AppDelegate.m”中的。但是现在都不在这里写了,现在写到SceneDelegate.m里面,而且UIWindow对象不需要你手动创建了。

一个UIWindow对象为应用程序的用户界面提供了背景以及重要的事件处理行为。
UIWindow继承自UIView,每一个view,想要出现在屏幕上都依赖于window,但是程序中的window之间是相互独立的。应用程序收到事件之后会先转发给适当的window对象,从而又将事件转发给view对象。

具体来说,UIWindow有以下几个主要功能:

  • 视图层次结构视图:
    UIWindow是应用程序的层次结构视图,其整体视图是附属于UIWindow子视图。
    当应用程序启动时,系统会自动创建一个UIWindow实例并将其设置为应用程序的主窗口。
  • 接收和分发事件:
    UIWindow负责接收来自用户的输入事件,例如触摸事件、按键事件等。
    UIWindow会根据视图层次结构将这些事件分配给合适的视图进行处理。
  • 管理视图控制器:
    UIWindow可以持有一个根基健全的模型,特别是一个UIViewController实例。
  • 多窗口支持:
    特定特殊场景下,例如iPad的分屏,应用程序可以创建多个UIWindow实例。
    每个UIWindow都有自己的视点层次结构,相互独立。
  • 状态栏管理:
    UIWindow负责管理应用程序的状态栏,例如电池电量、网络信号等图标的显示。

示例代码

- (void)scene:(UIScene *)scene willConnectToSession:(UISceneSession *)session options:(UISceneConnectionOptions *)connectionOptions {
    //创建一个视图跟踪器作为UIWindow的根视控制器
    self.window.rootViewController = [[UIViewController alloc] init];
    //设置window的颜色
    self.window.backgroundColor = [UIColor blueColor];
    //将window有效的显示在屏幕上
    [self.window makeKeyAndVisible];
    //直接给UIWindow上添加视图
    UIView* view = [[UIView alloc] initWithFrame:CGRectMake(100, 200, 50, 50)];
    view.backgroundColor = [UIColor greenColor];
    UIView* backview = [[UIView alloc] initWithFrame:CGRectMake(50, 200, 300, 300)];
    backview.backgroundColor = [UIColor redColor];
    [self.window addSubview:backview];
    //子视图的坐标会随着父视图的坐标改变而改变
    [backview addSubview:view];
    //打印不同对象的window属性,可以看出他们是同一个window
    NSLog(@"%@", view.window);
    NSLog(@"%@", backview.window);
    NSLog(@"%@", self.window);
}

打印结果
在这里插入图片描述
效果图
在这里插入图片描述

UIViewController

UIViewController是一个视图控制器,在整个UIKit中只有一个根视图控制器,属于window的属性。视图控制器用来管理界面和处理界面的逻辑类对象,程序启动前必须对根视图控制器赋值。

先新建一个View02类

#import "View02.h"

@interface View02 ()

@end

@implementation View02

- (void)viewDidLoad {
    [super viewDidLoad];
    // Do any additional setup after loading the view.
    //给视图控制器设置背景颜色
    self.view.backgroundColor = [UIColor greenColor];
}


- (void) touchesBegan:(NSSet<UITouch *> *)touches withEvent:(UIEvent *)event {
    
    //使当前的控制器消失掉,传入两个参数
    //第一个参数指是否有动画效果
    //第二个参数指结束后是否调用block块操作,不需要为nil
    [self dismissViewControllerAnimated: YES completion: nil];
}

/*
#pragma mark - Navigation

// In a storyboard-based application, you will often want to do a little preparation before navigation
- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender {
    // Get the new view controller using [segue destinationViewController].
    // Pass the selected object to the new view controller.
}
*/

@end

#import "ViewController.h"
#import "View02.h"

@interface ViewController ()

@end

@implementation ViewController

-(void)touchesBegan:(NSSet<UITouch *> *)touches withEvent:(UIEvent *)event
{
    //创建视图控制器二
    View02* vc= [[View02 alloc] init];
    //显示一个新的视图控制器界面到屏幕上来
    //第一个参数:新的视图控制器
    //第二个参数:是否是用动画切换效果
    //第三个参数:切换后是否使用block块,不使用为nil
    [self presentViewController:vc animated:YES completion:nil];
}


//当视图控制器第一次被加载视图时,调用此函数。
//当布局初始化视图来使用。
- (void)viewDidLoad {
    //默认情况下调用父类的加载视图函数
    [super viewDidLoad];
    // Do any additional setup after loading the view.
    UIView* view = [[UIView alloc] init];
    view.backgroundColor = [UIColor greenColor];
    view.frame = CGRectMake(100, 100, 100, 200);
    self.view.backgroundColor = [UIColor redColor];
    [self.view addSubview:view];
}
//视图即将显示,调用此函数
//参数:表示是否用动画切换后消失
//当前的状态:视图还没有显示
-(void) viewWillAppear:(BOOL)animated
{
    NSLog(@"即将显示");
}

//视图即将消失,调用此函数
//参数:表示是否用动画切换后消失
//当前的状态:视图还是在屏幕上
-(void) viewWillDisappear:(BOOL)animated
{
    NSLog(@"即将消失");
}

-(void) viewDidAppear:(BOOL)animated
{
    NSLog(@"已经显示");
}

-(void) viewDidDisappear:(BOOL)animated
{
    NSLog(@"已经消失");
}

@end

效果图
在这里插入图片描述

点击后效果图
在这里插入图片描述

定时器与视图对象

定时器对象

  • 可以在每个固定时间发送一个消息
  • 通过此函数可在固定时间段来完成一个根据时间间隔的任务
  • 通过此消息来调用相应的时间函数

接口部分

#import <UIKit/UIKit.h>

@interface ViewController : UIViewController {
    //定义一个定时器对象
    //可以在每个固定时间发送一个消息
    //通过此消息来调用相应的时间函数
    //通过此函数可在固定时间段来完成一个根据时间间隔的任务
    NSTimer* _timerView;
}

@property (retain, nonatomic) NSTimer* timerView;
@end

实现部分

#import "ViewController.h"

@interface ViewController ()

@end

@implementation ViewController
//属性和成员变量的同步
@synthesize timerView = _timerView;

- (void)viewDidLoad {
    [super viewDidLoad];
    // Do any additional setup after loading the view.
    //启动定时器按钮
    UIButton* btn = [UIButton buttonWithType:UIButtonTypeRoundedRect];
    
    btn.frame = CGRectMake(100, 100, 80, 40);
    
    [btn setTitle:@"启动定时器" forState:UIControlStateNormal];
    [btn addTarget:self action:@selector(pressStart) forControlEvents:UIControlEventTouchUpInside];
    [self.view addSubview:btn];
    //停止定时器按钮
    UIButton* btnstop = [UIButton buttonWithType:UIButtonTypeRoundedRect];
    btnstop.frame = CGRectMake(100, 200, 80, 40);
    [btnstop setTitle:@"停止定时器" forState:UIControlStateNormal];
    [btnstop addTarget:self action:@selector(pressStop) forControlEvents:UIControlEventTouchUpInside];
    [self.view addSubview:btnstop];
    
    UIView* view = [[UIView alloc] init];
    view.backgroundColor = [UIColor greenColor];
    view.frame = CGRectMake(0, 0, 80, 80);
    [self.view addSubview:view];
    //设置view的标签值
    //通过父亲视图对象以及view的标签值可以获得相应的视图对象
    view.tag = 111;
    
}
-(void) pressStart
{
    //NSTtimer类方法创建一个定时器并且启动这个定时器
    //P1:每隔多久调用定时器函数,以秒数为单位的整数(调用第三个参数)
    //P2:表示实现定时器函数的对象指针
    //P3:定时器函数对象
    //P4:可以传入定时器函数中一个参数,无参数可以传nil
    //P5:定时器是否重复操作;YES为重复;NO为只完成一次函数调用
    //返回值为一个新建好的定时器对象
    _timerView = [NSTimer scheduledTimerWithTimeInterval:0.1 target:self selector:@selector(updateTimer:) userInfo:@"美羊羊" repeats:YES];
    
}

//定时器函数
//可以将定时器本身做为参数传入
-(void) updateTimer:(NSTimer*) timer
{
    
    NSLog(@"开始啦,%@", timer.userInfo);
    UIView* view = [self.view viewWithTag:111];
    
    view.frame = CGRectMake(view.frame.origin.x + 1, view.frame.origin.y + 1, 80, 80);
}

-(void) pressStop
{
    if(_timerView != nil) {
        [_timerView invalidate];
    }
    //[NSTimer scheduledTimerWithTimeInterval:1 target:self selector:@selector(stop) userInfo:nil repeats:NO];
    //NSLog(@"停止啦");
}

-(void) stop
{
    NSLog(@"停止啦");
}

@end

效果图
在这里插入图片描述

UISwitch

  • UISwitch是一个开关控件,有开、关两种状态可以切换,是定义在UIKit库中的一个控件
  • 苹果官方的控件都定义在UIKit框架中,且UIKit框架中的所有控件都以UI开头
@interface ViewController : UIViewController {
    //定义一个开关控件
    //可以进行状态的改变
    //开:关:两种状态可以进行切换
    //所有UIKit框架库中的控件均以UI开头
    //苹果官方的控件都定义在UIKit框架中
    UISwitch* _myswitch;
}

@property (retain, nonatomic) UISwitch* myswitch;

@end

@implementation ViewController
//同步属性和成员变量
@synthesize myswitch = _myswitch;
- (void)viewDidLoad {
    [super viewDidLoad];
    // Do any additional setup after loading the view.
    //创建一个开关对象
    //继承与UIView
    _myswitch = [[UISwitch alloc] init];
    //苹果官方的控件的位置设置
    //位置X,Y的值可以改变,宽度和高度无法改变
    _myswitch.frame = CGRectMake(100, 200, 80, 40);
    //_myswitch.backgroundColor = [UIColor blueColor];
    //开关状态设置属性
    //YES:开启状态;NO:关闭状态
    _myswitch.on = YES;
    //也可以使用set函数
    //[_myswitch setOn:YES];
    //设置开关状态
    //P1:状态设置
    //P2:是否开启动画效果
    [_myswitch setOn:YES animated:YES];
    [self.view addSubview:_myswitch];
    //设置开启状态的风格颜色
    [_myswitch setOnTintColor:[UIColor redColor] ];
    //改变开关按钮的颜色
    [_myswitch setThumbTintColor:[UIColor blueColor]];
    //设置整体风格颜色
    //[_myswitch setTintColor:[UIColor purpleColor]];
    //向开关控件添加事件函数
    //每次改变的时候都会调用swChange函数
    [_myswitch addTarget:self action:@selector(swChange:) forControlEvents:UIControlEventValueChanged];
    //self.view.backgroundColor = [UIColor blueColor];
}

-(void) swChange:(UISwitch*) sw
{
    if(sw.on == YES)
        NSLog(@"开关被打开");
    else
        NSLog(@"开关被关上");
}

@end

效果图
在这里插入图片描述
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1711840.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

数据分析中的列与行交换技巧

新书上架~&#x1f447;全国包邮奥~ python实用小工具开发教程http://pythontoolsteach.com/3 欢迎关注我&#x1f446;&#xff0c;收藏下次不迷路┗|&#xff40;O′|┛ 嗷~~ 目录 一、引言&#xff1a;数据交换的重要性 二、列交换的基本原理 三、列交换的代码实现 1. 使…

[docker] docker 安全知识 - docker api, 权限提升 资源管理

[docker] docker 安全知识 - docker api, 权限提升 & 资源管理 这是 docker 安全的最后一篇 暴露 docker api 在 [docker] docker 安全知识 - docker 系统性简介 中曾经提到&#xff0c;docker cli 使用 restful api 与客户端和 docker daemon 之间交流。默认情况下&…

优化效率,简化流程:探索工资结算系统的重要性与实施方法

在现代企业中&#xff0c;工资结算是一项重要而复杂的任务。为了更好地管理和处理员工的工资事务&#xff0c;许多企业采用工资结算系统。本文将探讨工资结算系统的重要性&#xff0c;并介绍一些实施该系统的方法。 ### 1. 概述 工资结算系统是一种自动化的软件系统&#xff0…

Pycharm无法关闭-一直显示正在关闭项

界面上一直显示&#xff0c;正在关闭项目&#xff0c;而且我大部分项目&#xff0c;都能正常关闭&#xff0c;主要是一个由Selenium的项目关不掉&#xff0c;分享一下如何解决。 操作系统版本&#xff1a;Windows 10 专业版 22H2 软件版本&#xff1a;PyCharm Professional 2…

激光雷达测试板智能系统应用

在自动驾驶技术和机器人感知系统的迅猛发展中&#xff0c;激光雷达&#xff08;Lidar&#xff09;作为一种先进的测距技术&#xff0c;正逐渐成为这些系统不可或缺的组成部分。而在这一技术的实际应用前&#xff0c;对激光雷达进行精确的测试和校准是至关重要的一步。激光雷达测…

微乐校园管理系统的设计

管理员账户功能包括&#xff1a;系统首页&#xff0c;个人中心&#xff0c;管理员管理&#xff0c;基础数据管理&#xff0c;叫车管理&#xff0c;代跑管理&#xff0c;二手商品管理 司机账户功能包括&#xff1a;系统首页&#xff0c;个人中心&#xff0c;叫车管理&#xff0c…

pg_lakehouse 与 datafusion

原理分析 pg_lakehouse 是 ParadeDB 推出的一个开源插件&#xff0c;支持对多种数据湖里的数据做分析计算。它的出现&#xff0c;使得 Postgres 能够像访问本地数据一样轻松访问 S3 等对象存储&#xff0c;轻松访问 Delta Lake 上的表格&#xff0c;具备数据湖分析能力。 pg_…

就业班 第三阶段(ELK) 2401--5.22 day3 filebeat+elk云部署

kafka集群 Windterm同步输入&#xff0c;多台机子可以同时输入同步输入 启动kafka需要启动两个 第一个 [rootkafka1 ~]# cd /usr/local/kafka_2.11-2.0.0/ [rootkafka1 ~]# nohup bin/zookeeper-server-start.sh config/zookeeper.properties &第二个 [rootkafka1 ~]#…

一种基于单片机的智能饮水机设计

随着人们生活水平的提高&#xff0c;对美好生活质量的追求也越来越高。饮 水机是人们日常生活不可或缺的&#xff0c;实现饮水机的智能化控制不但方便&#xff0c; 而且更加安全。本文提出一种基于单片机的智能饮水控制系统&#xff0c;通过传 感器实现对水温的监测&#xff0c…

命令注入攻击及其防范措施

命令注入攻击及其防范措施 命令注入攻击是一种通过有漏洞的应用程序在主机操作系统上执行任意命令的攻击。 当应用程序将不安全的用户输入数据&#xff08;如表单、cookie、HTTP 标头等&#xff09;传递给系统命令执行时&#xff0c;可能会发生命令注入攻击。 命令注入攻击的…

《PNAS》和《Nature Communications》仿章鱼和蜗牛的粘液真空吸附,赋予了机器人吸盘新的“超能力”

想象一下&#xff0c;如果机器人能够像章鱼一样牢牢吸附在粗糙崎岖的岩石上&#xff0c;或者像蜗牛那样在墙面上悠然负重爬行&#xff0c;那会是多么神奇的一幕&#xff01;近日&#xff0c;布里斯托大学机器人实验室的Jonathan Rossiter教授课题组就为我们带来了这样的“超能力…

什么是抗压能力?如何判断自己的抗压能力?

什么是抗压能力&#xff1f; 抗压能力&#xff0c;也叫心理承受能力&#xff0c;指的是面对外界的压力&#xff0c;逆境&#xff0c;困境和挑战&#xff0c;能够有效的调整自己的心态&#xff0c;有效的应对和解决问题的能力。 抗压能力涉及多个方面&#xff0c;比如&#xf…

C语言.顺序表.通讯录

基于顺序表示实现通讯录 1.通讯录项目的功能要求2.代码实现3.头文件处理4.通讯录的具体实现4.1通讯录的初始化与销毁4.1.1通讯录的初始化4.1.2通讯录的初始化销毁 4.2通讯录的添加与删除数据4.2.1通讯录的添加数据4.2.1通讯录的删除数据 4.3通讯录的修改4.4通讯录的查找4.5通讯…

C语言-02_变量与进制

文章目录 1.关键字2.标识符3.变量3.1 变量的声明与赋值3.2 变量的作用域3.3 变量按类型的分类 4.基本数据类型4.1 整数类型4.1.1 类型说明4.1.2 举例4.1.3 后缀4.1.4 整型的极限值 4.2 浮点类型4.2.1 类型说明4.2.2 举例 4.3 字符类型4.4 布尔类型 5.变量间的运算规则5.1 隐式类…

Linux 防火墙 firewalld 常用命令

1 防火墙 - firewalld 1.1 开启防火墙 # 临时性开启&#xff0c;服务器重启后会恢复为原来的状态 systemctl start firewalld # 永久性开启&#xff08;即开机启动&#xff09;&#xff0c;重启服务器后生效 systemctl enable firewalld1.2 关闭防火墙 # 临时性关闭&#xf…

学习Uni-app开发小程序Day20

今天学习了&#xff1a;页面的渐变背景、使用deep修改子组件样式、全屏页面absolute定位布局和fit-content内容宽度、遮罩层状态转换及日期格式化、uni-popup弹窗层制作弹出信息 页面的渐变背景 需要设置页面背景&#xff0c;使用的是多个页面&#xff0c;这样就可以把背景做…

深度学习之CNN卷积神经网络

一.卷积神经网络 1. 导入资源包 import numpy as np import pandas as pd import matplotlib.pyplot as plt import sklearn import tensorflow as tf from tensorflow import keras注&#xff1a;from tensorflow import keras&#xff1a;从TensorFlow库中导入Keras模块&am…

关于Linux软链你必须知道的实用知识点(非常详细)零基础入门到精通,收藏这一篇就够了

背景 Linux中的软链&#xff0c;是非常强大的工具&#xff0c;如果只是一知半解&#xff0c;在解决问题时一定会让你栽跟头或者浪费大量的时间。非常有必要提前掌握Linux软链的几个实用的知识点。 分析 软链是什么&#xff1f; 在Linux中&#xff0c;软链接&#xff08;sym…

Echarts 实现线条绘制

文章目录 需求分析 需求 用 Echarts 实现如下效果 分析

PS Adobe Photoshop 2024 for Mac[破]图像处理软件[解]PS 2024安装教程[版]

Adobe Photoshop 2024 for Mac[破]图像处理软件[解]PS 2024安装教程[版] 原文地址&#xff1a;https://blog.csdn.net/weixin_48311847/article/details/139248839