【iOS】UI学习(二)

news2024/11/24 20:52:02

UI学习(二)

  • 进度条和滑动条
  • 步进器与分栏控件
  • 警告对话框和提示等待器
  • UITextField
    • UITextField控件
    • UITextFieldDelegate协议
  • UIScrollView
  • 布局子视图
    • 手动布局子视图
    • 自动布局子视图

进度条和滑动条

下面通过一个程序来讲解该内容

#import <UIKit/UIKit.h>

@interface ViewController : UIViewController
{
    //进度条对象
    //一般用来表示下载或视频播放的进度
    UIProgressView* _progressView;
    //滑动条的定义
    //一般用来进行调整音乐音量等
    UISlider* _slider;
}
//定义一个进度条属性
@property (retain, nonatomic) UIProgressView* progressView;
//定义一个滑动条属性
@property (retain, nonatomic) UISlider* slider;

@end

#import "ViewController.h"

@interface ViewController ()

@end

@implementation ViewController

- (void)viewDidLoad {
    [super viewDidLoad];
    // Do any additional setup after loading the view.
    _progressView = [[UIProgressView alloc] init];
    //进度条的宽度是固定的,所以第四个参数并没有意义
    _progressView.frame = CGRectMake(100, 400, 200, 100);
    //进度条默认为蓝色
    _progressView.progressTintColor = [UIColor greenColor];
    _progressView.trackTintColor = [UIColor blackColor];
    //设置它的进度值
    _progressView.progress = 0;
    //设置进度条的风格特征
    _progressView.progressViewStyle = UIProgressViewStyleDefault;
    [self.view addSubview:_progressView];
    
    _slider = [[UISlider alloc] init];
    //位置设置,宽度不可变更
    _slider.frame = CGRectMake(10, 500, 200, 100);
    //设置滑动条最大值100
    _slider.maximumValue = 100;
    //设置滑动条最小值,可以为负值
    _slider.minimumValue = 0;
    //设置滑动条的滑块的位置
    _slider.value = 0;
    //左侧滑条背景颜色(以滑块为起点)
    _slider.minimumTrackTintColor = [UIColor greenColor];
    //右侧滑条背景颜色
    _slider.maximumTrackTintColor = [UIColor redColor];
    //设置滑块的颜色
    _slider.thumbTintColor = [UIColor blueColor];
    //对滑条移动添加函数
    [_slider addTarget:self action:@selector(press) forControlEvents:UIControlEventValueChanged];
    [self.view addSubview:_slider];
}

-(void)press
{
    
    _progressView.progress = (_slider.value - _slider.minimumValue)/(_slider.maximumValue - _slider.maximumValue);
    NSLog(@"value = %f", _slider.value);
}

@end

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

步进器与分栏控件

#import <UIKit/UIKit.h>

@interface ViewController : UIViewController
{
    //定义步进器对象
    //按照一定的数字来调整某个数据
    UIStepper* _stepper;
    //分栏控制器定义
    UISegmentedControl* _segControl;
}

@property (retain, nonatomic) UIStepper* stepper;
@property (retain, nonatomic) UISegmentedControl* segControl;
@end

#import "ViewController.h"

@interface ViewController ()

@end

@implementation ViewController
@synthesize stepper = _stepper;
@synthesize segControl = _segControl;


- (void)viewDidLoad {
    [super viewDidLoad];
    
    //创建步进器对象
    _stepper = [[UIStepper alloc] init];
    //宽度是固定的,无法改变
    _stepper.frame = CGRectMake(100, 100, 100, 40);
    //设置步进器的最小值
    _stepper.minimumValue = 0;
    //设置步进器的最大值
    _stepper.maximumValue = 100;
    //设置步进器的当前值
    _stepper.value = 0;
    //设置步进器美走一次的value值
    _stepper.stepValue = 5;
    //是否将步进结果通过事件函数响应出来
    //YES:这时会一边执行步进器一边执行事件函数。随着按住的时间越长,执行步进器的速度就越快
    //NO:这是会执行步进器,只会在松开按钮时执行一次事件函数
    _stepper.continuous = NO;
    //当为YES时,按住按钮就会一直执行步进器
    //NO时,按住按钮只会执行一次步进器
    _stepper.autorepeat = YES;
    //添加事件函数
    [_stepper addTarget:self action:@selector(press) forControlEvents:UIControlEventValueChanged];
    [self.view addSubview:_stepper];
    
    
    //创建分栏控件对象
    _segControl = [[UISegmentedControl alloc] init];
    //宽度仍然不可改变
    _segControl.frame = CGRectMake(10, 200, 300, 40);
    //P1:按钮选项文字
    //P2:按钮的索引位置
    //P3:是否有插入的动画效果
    [_segControl insertSegmentWithTitle:@"ak" atIndex:0 animated:NO];
    [_segControl insertSegmentWithTitle:@"a1" atIndex:1 animated:NO];
    [_segControl insertSegmentWithTitle:@"a4" atIndex:2 animated:NO];
    _segControl.selectedSegmentIndex = 1;
    
    [self.view addSubview: self.segControl];
    
    [_segControl addTarget:self action:@selector(press1) forControlEvents:UIControlEventValueChanged];
}

-(void) press
{
    NSLog(@"Value = %f", _stepper.value);
}

-(void) press1
{
    NSLog(@"%ld", (long)self.segControl.selectedSegmentIndex);
}

@end

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

在这里插入图片描述

警告对话框和提示等待器

下面是几个将会用到的方法

  1. UIAlertController 中创建实例的指定初始化程序。该方法会创建具有特定标题、消息和首选样式的警报控制器。
    alertControllerWithTitle:(nullable NSString *)title message:(nullable NSString *)message preferredStyle:(UIAlertControllerStyle)preferredStyle:
  • title:设置警告框的标题,如果无标题为nil;
  • message:在警告框中显示的内容,无内容的话设置为nil;
  • oreferredStyle:警告控制器的样式。可以是 UIAlertControllerStyleAlertUIAlertControllerStyleActionSheet。前者表示警告控制器以弹出方式显示,后者表示以滑出方式显示。
  1. actionWithTitle是一个iOS开发中的方法,用于创建一个带有标题的动作按钮。
    actionWithTitle:(NSString *)title style:(UIPreviewActionStyle)style handler:(void (^)(UIPreviewAction *action, UIViewController *previewViewController))handler:
  • title:操作的名称
  • style:操作的样式,有UIAlertActionStyleDefault,UIAlertActionStyleCancel, UIAlertActionStyleDestructive三种;

UIAlertActionStyleDefault:表示一个默认的操作,通常为白底蓝字
UIAlertActionStyleCancel:表示一个取消操作,字体通常会做加粗处理
UIAlertActionStyleDestructive:表示一个具有破坏性的操作,通常使用红字。

  • 最后一部分表示执行动作将要执行的块
#import <UIKit/UIKit.h>

@interface ViewController : UIViewController {
    //定义一个警告对话框视图对象
    UIAlertController* _elertView;
    //等待提示对象
    //当下载,或加载比较大的文件时,可以显示此控件,处于提示等待状态
    UIActivityIndicatorView* _activityIndicator;
}
@property (retain, nonatomic) UIAlertController* elertView;
@property (retain, nonatomic) UIActivityIndicatorView* activityIndicator;
@end
#import "ViewController.h"

@interface ViewController ()

@end

@implementation ViewController
//同步属性和成员变量
@synthesize elertView = _elertView;
@synthesize activityIndicator = _activityIndicator;

- (void)viewDidLoad {
    [super viewDidLoad];
    // Do any additional setup after loading the view.
    //通过for循环定义两个按钮
    for(int i = 0; i < 2; i++) {
        UIButton* btn = [UIButton buttonWithType:UIButtonTypeRoundedRect];
        btn.frame = CGRectMake(100, 100 + i * 100, 100, 40);
        if(i == 0) {
            [btn setTitle:@"警告对话框" forState:UIControlStateNormal];
            
        } else {
            [btn setTitle:@"等待提示器" forState:UIControlStateNormal];
            
        }
        btn.tag = 100 + i;
        [btn addTarget:self action:@selector(pressBtn:) forControlEvents:UIControlEventTouchUpInside];
        
        [self.view addSubview:btn];
    }
}

-(void) pressBtn:(UIButton*) btn
{
    //创建警告对话框
    if(btn.tag == 100) {
        _elertView = [UIAlertController alertControllerWithTitle:@"警告" message:@"您的手机电量过低,即将关机" preferredStyle:UIAlertControllerStyleAlert];
        UIAlertAction* action01 = [UIAlertAction actionWithTitle:@"确认" style:UIAlertActionStyleDefault handler:^(UIAlertAction *action){/* 在这里编写执行该选项的代码*/}];
        UIAlertAction* action02 = [UIAlertAction actionWithTitle:@"取消" style:UIAlertActionStyleCancel handler:^(UIAlertAction *action){/* 在这里编写执行该选项的代码*/}];
        [_elertView addAction:action01];
        [_elertView addAction:action02];
        [self presentViewController:_elertView animated:YES completion:nil];
    } else if(btn.tag == 101) {//创建等待提示器
        //宽度和高度不可改变
        _activityIndicator = [[UIActivityIndicatorView alloc] initWithFrame:CGRectMake(100, 300, 80, 80)];
        //设定提示的风格
        _activityIndicator.activityIndicatorViewStyle = UIActivityIndicatorViewStyleMedium;
        //_activityIndicator.activityIndicatorViewStyle = UIActivityIndicatorViewStyleLarge;
        [self.view addSubview:_activityIndicator];
        //启动动画并显示
        [_activityIndicator startAnimating];
        //停止动画并隐藏
        //[_activityIndicator stopAnimating];
    }
}

@end

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

UITextField

UITextField控件

定义
UITextField是 iOS 中的一个 UIKit 类,表示单行文本输入字段。它允许用户在应用程序中输入和编辑文本
下面通过代码来演示该程序

#import <UIKit/UIKit.h>

@interface ViewController : UIViewController <UITextFieldDelegate>
{
    UITextField* _textField;
}
@property (retain, nonatomic) UITextField* textField;

@end

- (void)viewDidLoad {
    [super viewDidLoad];
    // Do any additional setup after loading the view.
    self.textField = [[UITextField alloc] init];
    self.textField.frame = CGRectMake(100, 250, 200, 40);
    self.textField.text = @"用户名";
    //self.textField.textColor = [UIColor blueColor];
    //字体的大小
    self.textField.font = [UIFont systemFontOfSize:24 ];
    //字体边框的风格
    //UITextBorderStyleNone:无边框风格
    //UITextBorderStyleLine:线框风格
    //UITextBorderStyleBezel:Bezel风格
    //UITextBorderStyleRoundedRect:圆角风格
    self.textField.borderStyle = UITextBorderStyleRoundedRect;
    //设置虚拟键盘的风格
    //UIKeyboardTypeDefault:默认的风格
    //UIKeyboardTypeNumberPad:数字和字母结合的风格       
    //UIKeyboardTypePhonePad:纯数字风格
    self.textField.keyboardType = UIKeyboardTypeDefault;
    //当text为空的时候,显示下面的文字
    self.textField.placeholder = @"请输入用户名...";
    //是否进行密码输入
    //YES:隐式输入内容
    //NO:显示输入内容(默认为NO)
    self.textField.secureTextEntry = NO;
    [self.view addSubview:self.textField];
    self.textField.delegate = self;
}

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

UITextFieldDelegate协议

-(void) touchesBegan:(NSSet<UITouch *> *)touches withEvent:(UIEvent *)event
{
    [self.textField resignFirstResponder];
    NSLog(@"键盘已回收");
}

- (void)textFieldDidBeginEditing:(UITextField *)textField
{
    NSLog(@"开始输入了");
}

- (void)textFieldDidEndEditing:(UITextField *)textField
{
    NSLog(@"结束编译了");
}

- (BOOL)textFieldShouldBeginEditing:(UITextField *)textField
{
    return YES;
}

- (BOOL)textFieldShouldEndEditing:(UITextField *)textField
{
    return YES;
}

注意:必须在viewDidLoad中设置代理对象才能调用以上的函数

self.textField.delegate = self;

结果
在这里插入图片描述

UIScrollView

  • UIScrollView实际上就是一个可以滚动的UIView,它可以左右滚动或者上下滚动。
  • UIScrollView支持平移(水平和垂直滚动)和缩放(捏合缩放)手势,允许用户导航和与内容交互。
  • UIScrollView可以根据开发人员的偏好自动缩放内容以适应可用空间或保持内容的原始大小。
#import <UIKit/UIKit.h>

@interface ViewController : UIViewController <UIScrollViewDelegate>
{
    UIScrollView* _sv;
}

@property (retain, nonatomic) UIScrollView* sv;
@end
#import "ViewController.h"

@interface ViewController ()

@end

@implementation ViewController
@synthesize sv=_sv;
- (void)viewDidLoad {
    [super viewDidLoad];
    
    self.sv = [[UIScrollView alloc] init];
    self.sv.frame = CGRectMake(0, 0, 394, 852);
    //是否按照整页来滚动视图
    self.sv.pagingEnabled = NO;
    //是否可以开启滚动效果
    self.sv.scrollEnabled = YES;
    //设置画布的大小,画布显示在滚动视图内部,一般大于frame的大小
    self.sv.contentSize = CGSizeMake(394, 852 * 5);
    //是否可以边缘弹动效果
    self.sv.bounces = NO;
    //是否开启横向、纵向弹动效果
    self.sv.alwaysBounceHorizontal = YES;
    self.sv.alwaysBounceVertical = YES;
    //显示横向滚动条
    self.sv.showsHorizontalScrollIndicator = YES;
    //是否实现纵向滚动条
    self.sv.showsVerticalScrollIndicator = YES;
    self.sv.backgroundColor = [UIColor greenColor];
    //添加图片进去
    for(int i = 0; i < 5; i++) {
        NSString* strName = [NSString stringWithFormat:@"%d.JPG", i + 1 ];
        UIImage* image = [UIImage imageNamed:strName];
        UIImageView* iView = [[UIImageView alloc] initWithImage:image];
        iView.frame = CGRectMake(0, 852 * i, 394, 852);
        [self.sv addSubview:iView];
    }
    //将当前视图控制器做为代理对象
    self.sv.delegate = self;
    [self.view addSubview:self.sv];
}
//当滚动视图移动时,只要offset坐标发生变化时,都会调用此函数
-(void) scrollViewDidScroll:(UIScrollView *)scrollView
{
    NSLog(@"y = %f", scrollView.contentSize.width);
}


@end

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

布局子视图

我们可以手动或者自动布局子视图。

手动布局子视图

ViewController.h:

#import "ViewController.h"
#import "ViewSuper.h"

@interface ViewController ()

@end

@implementation ViewController

- (void)viewDidLoad {
    [super viewDidLoad];
    
    
    ViewSuper* sView = [[ViewSuper alloc] init];
    sView.frame = CGRectMake(20, 20, 120, 200);
    sView.backgroundColor = [UIColor greenColor];
    [sView createSubViews];
    [self.view addSubview: sView];
    UIButton* btn1 = [UIButton buttonWithType:UIButtonTypeRoundedRect];
    btn1.frame = CGRectMake(300, 480, 80, 40);
    [btn1 setTitle:@"放大" forState:UIControlStateNormal];
    [btn1 addTarget:self action:@selector(press1) forControlEvents:UIControlEventTouchUpInside];
    [self.view addSubview: btn1];
    UIButton* btn2 = [UIButton buttonWithType:UIButtonTypeRoundedRect];
    btn2.frame = CGRectMake(300, 580, 80, 40);
    [btn2 setTitle:@"缩小" forState:UIControlStateNormal];
    btn1.titleLabel.font = [UIFont systemFontOfSize: 32];
    btn2.titleLabel.font = [UIFont systemFontOfSize: 32];
    [btn2 addTarget:self action:@selector(press2) forControlEvents:UIControlEventTouchUpInside];
    [self.view addSubview: btn2];
    sView.tag = 101;
}

-(void) press1
{
    //放大父视图动画
    ViewSuper* sView = (ViewSuper*)[self.view viewWithTag:101];
    [UIView animateWithDuration:1.0 animations:^{
        sView.frame = CGRectMake(20, 20, 300, 500);}];
}

-(void) press2
{
    //缩小父视图
    ViewSuper* sView = (ViewSuper*)[self.view viewWithTag:101];
    [UIView animateWithDuration:1.0 animations:^{
        sView.frame = CGRectMake(20, 20, 120, 200);}];
}

@end

ViewSuper

#import <UIKit/UIKit.h>

NS_ASSUME_NONNULL_BEGIN

@interface ViewSuper : UIView
{
    UIView* _view1;
    UIView* _view2;
    UIView* _view3;
    UIView* _view4;
}

-(void) createSubViews;
@end
#import "ViewSuper.h"
 
@implementation ViewSuper
 
- (void)createSubViews {
    //左上角视图
    _view1 = [[UIView alloc] init];
    _view1.frame = CGRectMake(0, 0, 40, 40);
    
    //右上角视图
    _view2 = [[UIView alloc] init];
    _view2.frame = CGRectMake(self.bounds.size.width - 40, 0, 40, 40);
    
    //右下角视图
    _view3 = [[UIView alloc] init];
    _view3.frame = CGRectMake(self.bounds.size.width - 40, self.bounds.size.height - 40, 40, 40);
    
    //左下角视图
    _view4 = [[UIView alloc] init];
    _view4.frame = CGRectMake(0, self.bounds.size.height - 40, 40, 40);
    
    _view1.backgroundColor = [UIColor redColor];
    _view2.backgroundColor = [UIColor redColor];
    _view3.backgroundColor = [UIColor redColor];
    _view4.backgroundColor = [UIColor redColor];
    
    [self addSubview: _view1];
    [self addSubview: _view2];
    [self addSubview: _view3];
    [self addSubview: _view4];
}
 
- (void)layoutSubviews {
    [UIView animateWithDuration: 1.0 animations:^ {
        self->_view1.frame = CGRectMake(0, 0, 40, 40);
        self->_view2.frame = CGRectMake(self.bounds.size.width - 40, 0, 40, 40);
        self->_view3.frame = CGRectMake(self.bounds.size.width - 40, self.bounds.size.height - 40, 40, 40);
        self->_view4.frame = CGRectMake(0, self.bounds.size.height - 40, 40, 40);
    }];
}
 
@end

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

自动布局子视图

自动布局子视图是通过UI自己提供的属性和方法来实现布局子视图。
autoresizingMask属性:这是一个 UIView 属性,允许当父视图的边界发生变化时,视图的大小和位置如何自动调整。
在这里插入图片描述

        [UIView animateWithDuration:1.0 animations:^{
            self->_superView.frame = CGRectMake(10, 30, 300, 500);
        }];

这是一个类方法,允许为一个或多个视图的属性变化制作动画。第一个参数是指动画持续的时间,第二个参数此参数是一个包含将要动画化的代码的块(或闭包)。在此块中,您可以修改一个或多个视图的属性,并且这些更改将以动画形式呈现。

代码演示

ViewController:

#import <UIKit/UIKit.h>

@interface ViewController : UIViewController
{
    UIView* _superView;
    UILabel* _view1;
    UILabel* _view2;
    UILabel* _view3;
    UILabel* _view4;
    UIView* _viewCenter;
}



@end
#import "ViewController.h"

@interface ViewController ()

@end

@implementation ViewController

- (void)viewDidLoad {
    [super viewDidLoad];
    
    _superView = [[UIView alloc] init];
    _superView.frame = CGRectMake(20, 50, 180, 300);
    _superView.backgroundColor = [UIColor redColor];
    
    _view1 = [[UILabel alloc] initWithFrame:CGRectMake(0, 0, 40, 40)];
    _view1.text = @"1";
    _view1.backgroundColor = [UIColor greenColor];
    
    _view2 = [[UILabel alloc] initWithFrame:CGRectMake(180-40, 0, 40, 40)];
    _view2.text = @"2";
    _view2.textAlignment = NSTextAlignmentCenter;
    _view2.backgroundColor = [UIColor greenColor];
    
    _view3 = [[UILabel alloc] initWithFrame:CGRectMake(0, 300-40, 40, 40)];
    _view3.text = @"3";
    _view3.backgroundColor = [UIColor greenColor];
    
    _view4 = [[UILabel alloc] initWithFrame:CGRectMake(180-40, 300-40, 40, 40)];
    _view4.text = @"4";
    _view4.backgroundColor = [UIColor greenColor];
    
    [_superView addSubview:_view1];
    [_superView addSubview:_view2];
    [_superView addSubview:_view3];
    [_superView addSubview:_view4];
    
    _viewCenter = [[UIView alloc] initWithFrame:CGRectMake(0, 0, _superView.bounds.size.width, 40)];
    _viewCenter.center = CGPointMake(180/2, 300/2);
    _viewCenter.backgroundColor = [UIColor greenColor];
    [_superView addSubview: _viewCenter];
    [self.view addSubview:_superView];
    _viewCenter.autoresizingMask = UIViewAutoresizingFlexibleWidth|UIViewAutoresizingFlexibleTopMargin|
    UIViewAutoresizingFlexibleBottomMargin;
    _view2.autoresizingMask = UIViewAutoresizingFlexibleLeftMargin;
    _view3.autoresizingMask = UIViewAutoresizingFlexibleTopMargin;
    _view4.autoresizingMask = UIViewAutoresizingFlexibleTopMargin|UIViewAutoresizingFlexibleLeftMargin;
}
//每一次触摸屏幕后,就会放大或缩小屏幕
-(void) touchesBegan:(NSSet<UITouch *> *)touches withEvent:(UIEvent *)event
{
    static BOOL isLarge = NO;
    if(isLarge == NO) {
        [UIView animateWithDuration:1.0 animations:^{
            self->_superView.frame = CGRectMake(10, 30, 300, 500);
        }];
    } else {
        [UIView animateWithDuration:1.0 animations:^{
                    self->_superView.frame = CGRectMake(20, 50, 180, 300);
        }];
    }
    isLarge = !isLarge;
}

@end

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

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

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

相关文章

go语言基于Gin集成后台管理系统开发定时任务管理cron/v3好用又好看

系统目前是支持两种定时类型&#xff0c;一种是函数类型&#xff0c;一种是接口类型&#xff0c;来支持多样的业务&#xff1b;时间周期可视化选择&#xff0c;方便设定执行周期。框架UI漂亮&#xff0c;添加管理定时任务设置简单&#xff0c;客户都可以做自己调整执行时间周期…

一维时间序列信号的广义傅里叶族变换(Matlab)

广义傅里叶族变换是一种时频变换方法&#xff0c;傅里叶变换、短时傅里叶变换、S变换和许多小波变换都是其特殊情况&#xff0c;完整代码及子函数如下&#xff0c;很容易读懂&#xff1a; % Run a demo by creating a signal, transforming it, and plotting the results% Cre…

flutter开发实战-下拉刷新继续下拉路由进入活动页面实现

flutter开发实战-下拉刷新继续下拉路由进入活动页面实现 很多应用都有首页通过下拉刷新&#xff0c;继续下拉进入新的活动会场进入方式。在Flutter中&#xff0c;也可以通过pull_to_refresh来实现控制刷新页&#xff0c;继续下拉进入新的活动会场页面 一、引入pull_to_refres…

[Redis]List类型

列表类型来存储多个有序的字符串&#xff0c;a、b、c、d、e 五个元素从左到右组成了一个有序的列表&#xff0c;列表中的每个字符串称为元素&#xff0c;一个列表最多可以存储个元素。在 Redis 中&#xff0c;可以对列表两端插入&#xff08;push&#xff09;和弹出&#xff08…

涂装线体智能化管理:RFID技术的典范案例

涂装线体智能化管理&#xff1a;RFID技术的典范案例 汽车涂装是汽车制造过程中极为关键的一环&#xff0c;涉及多道工序&#xff0c;如预处理、电泳、中涂、面漆等&#xff0c;每一步都需要精确控制以确保车身表面的质量和美观。传统方式下&#xff0c;车辆在不同工位间的流转依…

(CPU/GPU)粒子继承贴图颜色发射

GetRandomInfo节点(复制贴进scratch pad Scripts) Begin Object Class/Script/NiagaraEditor.NiagaraClipboardContent Name"NiagaraClipboardContent_22" ExportPath/Script/NiagaraEditor.NiagaraClipboardContent"/Engine/Transient.NiagaraClipboardConten…

微信小程序毕业设计-停车共享系统项目开发实战(附源码+论文)

大家好&#xff01;我是程序猿老A&#xff0c;感谢您阅读本文&#xff0c;欢迎一键三连哦。 &#x1f49e;当前专栏&#xff1a;微信小程序毕业设计 精彩专栏推荐&#x1f447;&#x1f3fb;&#x1f447;&#x1f3fb;&#x1f447;&#x1f3fb; &#x1f380; Python毕业设计…

基于Docker搭建属于你的CC++集成编译环境

常常&#xff0c;我会幻想着拥有一个随时可以携带、随时可以使用的开发环境&#xff0c;那该是多么美好的事情。 在工作中&#xff0c;编译环境的复杂性常常让我头疼不已。稍有不慎&#xff0c;删除了一些关键文件&#xff0c;整个编译链就会瞬间崩溃。更糟糕的是&#xff0c;…

GUI 01:GUI 编程概述,AWT 相关知识,Frame 窗口,Panel 面板,及监听事件的应用

一、前言 记录时间 [2024-05-30] 疑问导航 GUI 是什么&#xff1f;GUI 如何使用&#xff1f;GUI 有哪些应用&#xff1f; 学习目的 写一些自己心中的小工具&#xff1b;Swing 界面的维护&#xff1b;了解 MVC 架构&#xff0c;以及监听事件。 本文对图形用户界面&#xff08…

禁用USB端口的办法,哪一种禁用USB端口的方法好

禁用USB端口的办法&#xff0c;哪一种禁用USB端口的方法好 禁用USB端口是保护公司数据安全的一种常见做法&#xff0c;旨在防止未经授权的数据传输和潜在的恶意软件传播。以下是几种常见的禁用USB端口方法及其效果评价。 1、硬件方法&#xff1a; BIOS设置&#xff1a;通过BIO…

ICH指导原则数据库

ICH人用药品技术要求国际协调理事会&#xff0c;英文全称为"The International Council for Harmonisation of Technical Requirements for Pharmaceuticals for Human Use"。 ① ICH简介 于1990年由欧、美、日三方政府监管发起的一个国际非盈利组织&#xff0c;依…

L1527射频编码芯片 百万组通用编码器,可替代EV1527

L1527 是CMOS 结构的预烧内码&#xff08;遥控中的地址码&#xff09;通用编码器&#xff0c;内有 20 位可预烧写 100 万组内码组合&#xff0c;使得重码率很低&#xff0c;具有更高安全性。芯片内集成误操作禁止功能&#xff0c;在按键输入有效且状态不变时&#xff0c;芯片连…

kaggle竞赛系列基于图像对水稻分类代码案例

目录 依赖环境 代码 导入依赖包 定义数据集路径&#xff1a; 创建训练集、验证集和测试集的文件夹&#xff1a; 代码的作用&#xff1a; 设置新的数据集路径与类别名称 代码的作用&#xff1a; 定义数据预处理和增强变换&#xff1a; 代码的作用&#xff1a; 定义数…

C语言 | Leetcode C语言题解之第122题买卖股票的最佳时机II

题目&#xff1a; 题解&#xff1a; int maxProfit(int* prices, int pricesSize) {int ans 0;for (int i 1; i < pricesSize; i) {ans fmax(0, prices[i] - prices[i - 1]);}return ans; }

FPGA DMA IP核使用指南

摘要 本文旨在介绍FPGA中DMA(Direct Memory Access)IP核的使用,包括其基本框架、测试代码编写以及仿真波形的分析。DMA是一种允许外围设备直接与内存进行数据交换的技术,无需CPU的介入,从而提高了数据传输的效率。 1. 引言 在现代FPGA设计中,DMA IP核因其…

一站式链路追踪:阿里云的端到端解决方案

作者&#xff1a;涯海 炎炎夏日&#xff0c;当你打开外卖 APP 购买奶茶却发现下单失败&#xff1b;五一佳节&#xff0c;当你自驾游途中发现导航响应缓慢&#xff0c;频繁错过路口&#xff1b;深更半夜&#xff0c;当你辅导孩子功课&#xff0c;却发现 GPT 应用迟迟无法应答。…

【VTKExamples::Utilities】第十七期 ZBuffer

很高兴在雪易的CSDN遇见你 VTK技术爱好者 QQ:870202403 公众号:VTK忠粉 前言 本文分享VTK样例ZBuffer,并解析接口vtkWindowToImageFilter,希望对各位小伙伴有所帮助! 感谢各位小伙伴的点赞+关注,小易会继续努力分享,一起进步! 你的点赞就是我的动力(^U^)ノ…

一个案例告诉你,MySQL如何查询今天、昨天、近7天、近30天、本月、上个月、本季度、上季度、本年、上一年数据

参考博客 mysql查询当天/昨天/近7天/近30天/本月/上个月/本季度/上季度/本年/上一年 数据 正文内容 创建测试案例&#xff08;也可直接使用附录MySQL脚本生成数据&#xff09; 1、新建测试表 CREATE TABLE example (id INT AUTO_INCREMENT PRIMARY KEY,date_column DATE,d…

无信号、弱信号地区的“关键先生”,北三区域短报文应急通信——户外应急救援的安全保障

随着中国经济高速发展和民众生活水平、文化素养的不断提高&#xff0c;户外探险活动已经成为越来越多民众自主选择的一种休闲生活方式。 然而&#xff0c;产业发展和参与人数激增的同时户外探险事故也不断增多。根据中国探险协会发布《2022年度中国户外探险事故报告》显示2022…

跨境电商站外推广全攻略:揭秘有效推广方法!

随着全球贸易的蓬勃兴起&#xff0c;越来越多的企业开始涉足跨境电商领域。然而&#xff0c;要在国际市场上取得成功&#xff0c;仅仅依赖平台内的推广策略是远远不够的。站外推广成为了跨境电商拓展业务、吸引潜在客户的关键策略。那么&#xff0c;跨境电商的站外推广具体包括…