UI學習筆記(二)—— 深入了解導航控制

「OC」UI學習筆記(二)

文章目錄

  • 「OC」UI學習筆記(二)
    • 手動布局子視圖
    • 自動布局子視圖
    • 導航控制器
      • 高級使用

手動布局子視圖

//父視圖的.h文件
#import <UIKit/UIKit.h>
NS_ASSUME_NONNULL_BEGIN@interface JCSuperView : UIView
{UIView *_v1;UIView *_v2;UIView *_v3;UIView *_v4;
}
-(void)makeView;
@endNS_ASSUME_NONNULL_END
—————————————————————————————————————————————————————————————————————————————————————————————————————————
//父視圖.m文件內容
#import "JCSuperView.h"@implementation JCSuperView//布局父視圖
-(void)makeView {//左上角_v1 = [[UIView alloc] init];_v1.frame = CGRectMake(0, 0, 40, 40);//右上角_v2 = [[UIView alloc] init];_v2.frame = CGRectMake(self.bounds.size.width - 40, 0, 40, 40);//右下角_v3 = [[UIView alloc] init];_v3.frame = CGRectMake(self.bounds.size.width - 40, self.bounds.size.height - 40, 40, 40);//左下角_v4 = [[UIView alloc] init];_v4.frame = CGRectMake(0, self.bounds.size.height - 40, 40, 40);_v1.backgroundColor = [UIColor redColor];_v2.backgroundColor = [UIColor redColor];_v3.backgroundColor = [UIColor redColor];_v4.backgroundColor = [UIColor redColor];[self addSubview:_v1];[self addSubview:_v2];[self addSubview:_v3];[self addSubview:_v4];}
//當需要重新布局時會調用此函數
-(void)layoutSubviews {[UIView beginAnimations:nil context:nil];[UIView setAnimationDuration:1];_v1.frame = CGRectMake(0, 0, 40, 40);_v2.frame = CGRectMake(self.bounds.size.width - 40, 0, 40, 40);_v3.frame = CGRectMake(self.bounds.size.width - 40, self.bounds.size.height - 40, 40, 40);_v4.frame = CGRectMake(0, self.bounds.size.height - 40, 40, 40);[UIView commitAnimations];
}@end
—————————————————————————————————————————————————————————————————————————————————————————————————————————
#import <UIKit/UIKit.h>
#import "ViewController.h"
#import "JCViewViewController.h"
#import "JCSuperView.h"@interface ViewController ()@end@implementation ViewController//在第一次加載被使用
- (void)viewDidLoad {[super viewDidLoad];[self makeSuper];
}-(void)makeSuper {JCSuperView *superview = [[JCSuperView alloc] initWithFrame:CGRectMake(20, 20, 200, 300)];[superview makeView];superview.backgroundColor = [UIColor greenColor];superview.tag = 101;UIButton *b1 = [UIButton buttonWithType:UIButtonTypeRoundedRect];b1.frame = CGRectMake(300, 600, 80, 40);[b1 setTitle:@"放大" forState:UIControlStateNormal];[b1 addTarget:self action:@selector(beBig) forControlEvents:UIControlEventTouchUpInside];UIButton *b2 = [UIButton buttonWithType:UIButtonTypeRoundedRect];b2.frame = CGRectMake(300, 700, 80, 40);[b2 setTitle:@"縮小" forState:UIControlStateNormal];[b2 addTarget:self action:@selector(beSmall) forControlEvents:UIControlEventTouchUpInside];[self.view addSubview:superview];[self.view addSubview: b1];[self.view addSubview: b2];
}//事件放大功能
-(void)beBig {JCSuperView *sview = (JCSuperView*)[self.view viewWithTag:101];[UIView beginAnimations:nil context:nil];[UIView setAnimationDuration:1];sview.frame = CGRectMake(50, 50, 300, 400);[UIView commitAnimations];
}//實現縮小功能
-(void)beSmall {JCSuperView *sview = (JCSuperView*)[self.view viewWithTag:101];[UIView beginAnimations:nil context:nil];[UIView setAnimationDuration:1];sview.frame = CGRectMake(50, 50, 200, 300);[UIView commitAnimations];
}

自動布局子視圖

-(void)makeAutoView {_sview = [[UIView alloc] initWithFrame:CGRectMake(20, 20, 180, 280)];_sview.backgroundColor = [UIColor blueColor];_v1 = [[UILabel alloc] initWithFrame:CGRectMake(0, 0, 40, 40)];_v1.backgroundColor = [UIColor redColor];_v1.text = @"1";_v2 = [[UILabel alloc] initWithFrame:CGRectMake(140, 0, 40, 40)];_v2.backgroundColor = [UIColor redColor];_v2.text = @"2";_v3 = [[UILabel alloc] initWithFrame:CGRectMake(140, 240, 40, 40)];_v3.backgroundColor = [UIColor redColor];_v3.text = @"3";_v4 = [[UILabel alloc] initWithFrame:CGRectMake(0, 240, 40, 40)];_v4.backgroundColor = [UIColor redColor];_v4.text = @"4";[_sview addSubview:_v1];[_sview addSubview:_v2];[_sview addSubview:_v3];[_sview addSubview:_v4];[self.view addSubview:_sview];_center = [[UIView alloc]initWithFrame:CGRectMake(0, 0, _sview.bounds.size.width, 40)];_center.center = CGPointMake(90, 140);_center.backgroundColor = [UIColor redColor];[_sview addSubview:_center];//自動布局屬性,設置子視圖和父視圖的相對關系_center.autoresizingMask = UIViewAutoresizingFlexibleWidth| UIViewAutoresizingFlexibleTopMargin| UIViewAutoresizingFlexibleBottomMargin;//設置左邊為可變距離_v2.autoresizingMask = UIViewAutoresizingFlexibleLeftMargin;_v3.autoresizingMask = UIViewAutoresizingFlexibleLeftMargin | UIViewAutoresizingFlexibleTopMargin;_v4.autoresizingMask = UIViewAutoresizingFlexibleTopMargin;
}- (void)touchesBegan:(NSSet<UITouch *> *)touches withEvent:(UIEvent *)event {static BOOL flag = NO;[UIView beginAnimations:nil context:nil];[UIView setAnimationDuration:1];if (flag == NO) {_sview.frame = CGRectMake(20, 20, 360, 480);flag = YES;} else {_sview.frame = CGRectMake(20, 20, 180, 280);flag = NO;}[UIView commitAnimations];
}

在iOS13.0版本中beginAnimationscommitAnimations方法已經被廢棄,不推薦在新的iOS開發中使用。現在的iOS開發更常用的是使用UIView的動畫塊(animateWithDuration:animations:)或UIViewPropertyAnimator等更高級的API來實現動畫效果。這些新的API提供了更靈活、更強大的動畫控制能力,并提供了更好的性能和可讀性。

以下是對上面程序使用animateWithDuration:animations:進行改寫

-(void)makeAutoView {_sview = [[UIView alloc] initWithFrame:CGRectMake(20, 20, 180, 280)];_sview.backgroundColor = [UIColor blueColor];_v1 = [[UILabel alloc] initWithFrame:CGRectMake(0, 0, 40, 40)];_v1.backgroundColor = [UIColor redColor];_v1.text = @"1";_v2 = [[UILabel alloc] initWithFrame:CGRectMake(140, 0, 40, 40)];_v2.backgroundColor = [UIColor redColor];_v2.text = @"2";_v3 = [[UILabel alloc] initWithFrame:CGRectMake(140, 240, 40, 40)];_v3.backgroundColor = [UIColor redColor];_v3.text = @"3";_v4 = [[UILabel alloc] initWithFrame:CGRectMake(0, 240, 40, 40)];_v4.backgroundColor = [UIColor redColor];_v4.text = @"4";[_sview addSubview:_v1];[_sview addSubview:_v2];[_sview addSubview:_v3];[_sview addSubview:_v4];[self.view addSubview:_sview];_center = [[UIView alloc]initWithFrame:CGRectMake(0, 0, _sview.bounds.size.width, 40)];_center.center = CGPointMake(90, 140);_center.backgroundColor = [UIColor redColor];[_sview addSubview:_center];//自動布局屬性,設置子視圖和父視圖的相對關系_center.autoresizingMask = UIViewAutoresizingFlexibleWidth| UIViewAutoresizingFlexibleTopMargin| UIViewAutoresizingFlexibleBottomMargin;//設置左邊為可變距離_v2.autoresizingMask = UIViewAutoresizingFlexibleLeftMargin;_v3.autoresizingMask = UIViewAutoresizingFlexibleLeftMargin | UIViewAutoresizingFlexibleTopMargin;_v4.autoresizingMask = UIViewAutoresizingFlexibleTopMargin;
}- (void)touchesBegan:(NSSet<UITouch *> *)touches withEvent:(UIEvent *)event {static BOOL flag = NO;//參數一:動畫時長//參數二:代碼塊實現功能[UIView animateWithDuration:1 animations:^{if (flag == NO) {self->_sview.frame = CGRectMake(20, 20, 360, 480);flag = YES;} else {self->_sview.frame = CGRectMake(20, 20, 180, 280);flag = NO;}}];
}

導航控制器

//SceneDelegate.m
#import "SceneDelegate.h"
#import "ViewController.h"
#import "JCRootViewController.h"
@interface SceneDelegate ()@end@implementation SceneDelegate- (void)scene:(UIScene *)scene willConnectToSession:(UISceneSession *)session options:(UISceneConnectionOptions *)connectionOptions {self.window.frame = [UIScreen mainScreen].bounds;//創建視圖控制器JCRootViewController *root = [[JCRootViewController alloc] init];//創建導航控制器——主要用于管理多個視圖控制器的切換//在創建控制器,一定要有一個根視圖控制器//參數一:就是作為導航控制器的根視圖控制器UINavigationController *nav = [[UINavigationController alloc] initWithRootViewController:root];//將根視圖設置為導航控制器self.window.rootViewController = nav;[self.window makeKeyAndVisible];}- (void)sceneDidDisconnect:(UIScene *)scene {// Called as the scene is being released by the system.// This occurs shortly after the scene enters the background, or when its session is discarded.// Release any resources associated with this scene that can be re-created the next time the scene connects.// The scene may re-connect later, as its session was not necessarily discarded (see `application:didDiscardSceneSessions` instead).
}- (void)sceneDidBecomeActive:(UIScene *)scene {// Called when the scene has moved from an inactive state to an active state.// Use this method to restart any tasks that were paused (or not yet started) when the scene was inactive.
}- (void)sceneWillResignActive:(UIScene *)scene {// Called when the scene will move from an active state to an inactive state.// This may occur due to temporary interruptions (ex. an incoming phone call).
}- (void)sceneWillEnterForeground:(UIScene *)scene {// Called as the scene transitions from the background to the foreground.// Use this method to undo the changes made on entering the background.
}- (void)sceneDidEnterBackground:(UIScene *)scene {// Called as the scene transitions from the foreground to the background.// Use this method to save data, release shared resources, and store enough scene-specific state information// to restore the scene back to its current state.
}@end
—————————————————————————————————————————————————————————————————————————————————————————————————————————
//創建一個新的controller的子類,作為新的主根視圖
#import"JCRootViewController.h"@interface JCRootViewController ()@end@implementation JCRootViewController- (void)viewDidLoad {[super viewDidLoad];// Do any additional setup after loading the view.self.view.backgroundColor = [UIColor yellowColor];//設置導航欄文字self.title = @"根視圖";//設置導航元素項目標題self.navigationItem.title = @"Title";//優先使用title為標題//只能指定風格樣式,系統風格的按鈕內容或者標題字體不能改變UIBarButtonItem *left = [[UIBarButtonItem alloc] initWithTitle:@"回退" style:UIBarButtonItemStyleDone target:self action:@selector(pressLeft)];//向導航欄左側的按鈕進行賦值self.navigationItem.leftBarButtonItem = left;UIBarButtonItem *right = [[UIBarButtonItem alloc] initWithTitle:@"詳情" style:UIBarButtonItemStylePlain target:self action:@selector(pressRight)];//向導航欄右側的按鈕進行賦值self.navigationItem.rightBarButtonItem = right;//添加多個按鈕,將多個控件添加至導航欄右側之中UILabel *l = [[UILabel alloc] init];l.text = @"test";l.textAlignment = NSTextAlignmentCenter;UIBarButtonItem *btn = [[UIBarButtonItem alloc] initWithCustomView:l];NSArray *arr = [NSArray arrayWithObjects:btn, right, nil];self.navigationItem.rightBarButtonItems = arr;
}-(void)pressLeft {NSLog(@"回退鍵被點擊");
}
-(void)pressRight {NSLog(@"詳情鍵被點擊");
}
/*
#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

高級使用

//SceneDelegate.m
#import "SceneDelegate.h"
#import "FirstViewController.h"
#import "SecondViewController.h"
#import "ThirdViewController.h"
#import "fourthViewController.h"
#import "fifthViewController.h"
#import "sixthViewController.h"
@interface SceneDelegate ()@end@implementation SceneDelegate- (void)scene:(UIScene *)scene willConnectToSession:(UISceneSession *)session options:(UISceneConnectionOptions *)connectionOptions {_window.frame = [UIScreen mainScreen].bounds;// 創建視圖控制器FirstViewController *v1 = [[FirstViewController alloc] init];SecondViewController *v2 = [[SecondViewController alloc] init];ThirdViewController *v3 = [[ThirdViewController alloc] init];fourthViewController *v4 = [[fourthViewController alloc] init];fifthViewController *v5 = [[fifthViewController alloc] init];sixthViewController *v6 = [[sixthViewController alloc] init];// 創建 UITabBarController 并設置視圖控制器數組UITabBarController *tabBarController = [[UITabBarController alloc] init];//通過edit修改會修改數組之中元素的順序tabBarController.viewControllers = @[v1, v2, v3, v4, v5, v6];// 設置每個選項卡的標題v1.title = @"Tab 1";v2.title = @"Tab 2";v3.title = @"Tab 3";v4.title = @"Tab 4";v5.title = @"Tab 5";v6.title = @"Tab 6";// 將每個視圖控制器設置不同的背景顏色v1.view.backgroundColor = [UIColor redColor];v2.view.backgroundColor = [UIColor blueColor];v3.view.backgroundColor = [UIColor greenColor];v4.view.backgroundColor = [UIColor yellowColor];v5.view.backgroundColor = [UIColor purpleColor];v6.view.backgroundColor = [UIColor orangeColor];//導航欄顏色tabBarController.tabBar.barTintColor = [UIColor whiteColor];//改變按鈕風格顏色tabBarController.tabBar.tintColor = [UIColor blackColor];// 將導航控制器設置為根視圖控制器_window.rootViewController = tabBarController;//設置代理tabBarController.delegate = self;[_window makeKeyAndVisible];
}//即將開始編輯時調用
-(void)tabBarController:(UITabBarController *)tabBarController willBeginCustomizingViewControllers:(NSArray<__kindof UIViewController *> *)viewControllers {NSLog(@"編輯之前");
}//即將結束編輯之時
-(void)tabBarController:(UITabBarController *)tabBarController willEndCustomizingViewControllers:(NSArray<__kindof UIViewController *> *)viewControllers changed:(BOOL)changed {NSLog(@"即將結束");
}-(void)tabBarController:(UITabBarController *)tabBarController didEndCustomizingViewControllers:(NSArray<__kindof UIViewController *> *)viewControllers changed:(BOOL)changed {NSLog(@"已經結束編輯");
}-(void)tabBarController:(UITabBarController *)tabBarController didSelectViewController:(UIViewController *)viewController {NSLog(@"選中后控制器對象 —— %lu",(unsigned long)tabBarController.selectedIndex);
}- (void)sceneDidDisconnect:(UIScene *)scene {// Called as the scene is being released by the system.// This occurs shortly after the scene enters the background, or when its session is discarded.// Release any resources associated with this scene that can be re-created the next time the scene connects.// The scene may re-connect later, as its session was not necessarily discarded (see `application:didDiscardSceneSessions` instead).
}- (void)sceneDidBecomeActive:(UIScene *)scene {// Called when the scene has moved from an inactive state to an active state.// Use this method to restart any tasks that were paused (or not yet started) when the scene was inactive.
}- (void)sceneWillResignActive:(UIScene *)scene {// Called when the scene will move from an active state to an inactive state.// This may occur due to temporary interruptions (ex. an incoming phone call).
}- (void)sceneWillEnterForeground:(UIScene *)scene {// Called as the scene transitions from the background to the foreground.// Use this method to undo the changes made on entering the background.
}- (void)sceneDidEnterBackground:(UIScene *)scene {// Called as the scene transitions from the foreground to the background.// Use this method to save data, release shared resources, and store enough scene-specific state information// to restore the scene back to its current state.
}@end

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/bicheng/18385.shtml
繁體地址,請注明出處:http://hk.pswp.cn/bicheng/18385.shtml
英文地址,請注明出處:http://en.pswp.cn/bicheng/18385.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

【最新區塊鏈論文錄用資訊】CCF A—INFOCOM 2024 共17篇

Conference&#xff1a;IEEE International Conference on Computer Communications CCF level&#xff1a;CCF A Categories&#xff1a;計算機網絡 Year&#xff1a;2024 Num&#xff1a;17 A Generic Blockchain-based Steganography Framework with High Capacity via …

Python: 使用pyotp實現OTP一次性密碼驗證

使用pyotp實現OTP一次性密碼驗證 OTP的基本原理 生成一個共享秘鑰作為隨機數的種子服務端通過種子計算出當前的密碼客戶端也通過相同的種子計算出當前的密碼驗證客戶端生成的密碼和服務端生成的密碼是否匹配 服務端和客戶端計算的方式一樣 共享密鑰 時間因子 算法 > 密…

多個文本如何一鍵導出二維碼?在線批量生碼的制作方法

當存在多條文本數據并且需要將每條數據生成單獨的二維碼來使用&#xff0c;很多小伙伴可能還在用一個一個來制作的方法&#xff0c;在二維碼生成器上將文本轉二維碼。這種方式操作起來比較的繁瑣&#xff0c;需要浪費大量的時間&#xff0c;那么有什么方法可以簡化這個過程嗎&a…

【Android-Compose】ViewModel 的 init 初始化函數中使用非主線程上的協程閃退問題

問題&#xff1a; 在 Compose- kotlin 中&#xff0c;如果在 ViewModel 中的 init 函數中使用非主線程上的協程會導致閃退問題&#xff0c; 具體代碼為&#xff1a; HiltViewModel class ApkScreenViewModel Inject constructor(... ) : ViewModel() {// 1. 在非 主線程的協程…

#學習方法#筆記#微信

飛鳥寫作是一個非常好用、靠譜且方便的論文寫作工具&#xff0c;可以幫助用戶高效地完成論文寫作任務。無論是學生還是研究人員&#xff0c;使用飛鳥寫作都能極大地提升寫作效率和質量。 首先&#xff0c;飛鳥寫作具有強大的查重降重功能&#xff0c;能夠幫助用戶快速檢測論文…

【數據庫】數據庫學習(MySQL,Oracle,PostgreSql)

數據庫語句學習 摘要&#xff1a;文章主要內容是數據庫語句的基本操作&#xff0c;以及一些基本的數據庫標準庫函數 重點&#xff1a;SQL語句對大小寫不敏感 數據庫操作語句 SELECT - 從數據庫表中獲取數據UPDATE - 更新數據庫表中的數據DELETE - 從數據庫表中刪除數據INSERT …

OSPF的擴展配置

1、認證——直連的鄰居或鄰接關系間,進行認證配置后,5種數據包中均攜帶身份核實的密碼&#xff0c;且華為設備會對更新信息進行加密--前提為認證方式選擇密文認證 1)接口認證 [r1-GigabitEthernet0/0/1ospf authentication-mode md5 1 cipher 123456 直連的鄰居間秘鑰和編號、模…

行列視(RCV)能否同時支持多個實時數據庫?

行列視&#xff08;RCV&#xff09;生產數據應用系統在設計時考慮到了多數據源的需求&#xff0c;因此它支持同時連接多個實時數據庫。這意味著用戶可以輕松地將來自不同實時數據庫的數據整合到行列視&#xff08;RCV&#xff09;系統中&#xff0c;實現數據的集中管理和分析。…

Android14 WMS-窗口添加流程(二)-Server端

上一篇文章講到了Client端窗口添加流程&#xff0c;本文接著上文往下講&#xff0c;講一下Server端的窗口添加流程。 1. WindowManagerService#grantInputChannel 由grantInputChannel我們可以看到&#xff0c;Client端傳入了session對象&#xff0c; 發起者Uid-callingUid&am…

X.509數字證書

在國密標準文件《GMT 0015-2012 基于SM2密碼算法的數字證書格式》里有對X.509數字證書格式的詳細描述。 數字證書的定義 由國家認可的&#xff0c;具有權威性、可信性和公正性的第三方證書認證機構&#xff08;CA&#xff09;進行數字簽名的一個可信的數字化文件。 數字證書…

YOLOv10代碼詳細介紹(附錄訓練教程和權重)

前言 YOLOv10 是清華大學研究人員在 UltralyticsPython 清華大學的研究人員在 YOLOv10軟件包的基礎上&#xff0c;引入了一種新的實時目標檢測方法&#xff0c;解決了YOLO 以前版本在后處理和模型架構方面的不足。通過消除非最大抑制&#xff08;NMS&#xff09;和優化各種模型…

【幾何角度】感知機

本質&#xff1a;將n維空間中的一些點線性投影到一維&#xff0c;在一維軸上找一個閾值對這些點進行二分類。 程序&#xff1a; import numpy as npclass Perceptron:def __init__(self, learning_rate0.01, n_iterations1000):self.learning_rate learning_rateself.n_itera…

【Python基礎】一文搞懂:Python 中 “requirements.txt“ 文件生成和使用

文章目錄 1 引言2 什么是 requirements.txt&#xff1f;3 如何生成 requirements.txt&#xff1f;3.1 方法一&#xff1a;使用 pip freeze3.2 方法二&#xff1a;使用 pipreqs 3.3 使用 pip freeze 和 pipreqs 的對比4 如何使用 requirements.txt&#xff1f;4.1 安裝依賴4.2 更…

[從零開發JS應用] 如何在VScode中配置Javascript環境,常見的調試方法有哪些?

一、安裝VSCode和Node.js 記錄環境配置&#xff1a;本文配置的環境主要針對單獨JS文件的斷點調試&#xff0c;主要是為了調試LeetCode里面的代碼。 首先在官網下載對應的版本&#xff1a;https://nodejs.org/en/ 開始安裝&#xff0c;可以自定義選擇安裝路徑。 這里選擇Add Pa…

【親測,安卓版】快速將網頁網址打包成安卓app,一鍵將網頁打包成app,免安裝純綠色版本,快速將網頁網址打包成安卓apk

背景&#xff1a;部分客戶需求將自己網站打包成app&#xff0c;供用戶在瀏覽器安裝使用、 網頁網址快速生成app 準備材料操作流程第一步&#xff1a;打開HBuilder X新建項目第二步創建Wap2App項目第三步修改App圖標第四步發布app第五步查看apk 準備材料 1.需要打包的網頁 2.ap…

在網頁開發中,前后端如何更好地協同工作?

在網頁開發中&#xff0c;前后端如何更好地協同工作是非常關鍵的&#xff0c;以下是一些方法和技巧可以幫助前后端更好地協同工作&#xff1a; 1.明確需求和規范&#xff1a;前后端應該共同討論和明確項目的需求和規范&#xff0c;包括功能、界面、數據格式等。確保雙方對項目…

頁面加載不出來,報錯[@umijs/runtime] load component failed

問題描述 頁面加載不出來數據&#xff0c;一直在旋轉&#xff0c;控制臺輸出內容如下&#xff1a; 原因分析&#xff1a; 之前頁面是沒有問題的&#xff0c;在寫當前頁面突然出現頁面加載不出來&#xff0c;控制臺報錯&#xff0c;主要是頁面引入了這行代碼報錯 import { …

MX Component基礎使用(多點位讀取,多點位寫入)

步驟&#xff0c;先連接PLC&#xff0c;然后在填入對應的點位 D10 然后去讀取。 using System;using System.Collections.Generic;using System.ComponentModel;using System.Data;using System.Drawing;using System.Linq;using System.Text;using System.Threading.Tasks;us…

邊緣計算網關的主要功能有哪些?天拓四方

隨著物聯網&#xff08;IoT&#xff09;的快速發展和普及&#xff0c;邊緣計算網關已經成為了數據處理和傳輸的重要樞紐。作為一種集成數據采集、協議轉換、數據處理、數據聚合和遠程控制等多種功能的設備&#xff0c;邊緣計算網關在降低網絡延遲、提高數據處理效率以及減輕云數…

民國漫畫雜志《時代漫畫》第13期.PDF

時代漫畫13.PDF: https://url03.ctfile.com/f/1779803-1247458360-14efab?p9586 (訪問密碼: 9586) 《時代漫畫》的雜志在1934年誕生了&#xff0c;截止1937年6月戰爭來臨被迫停刊共發行了39期。 ps:資源來源網絡&#xff01;