最近購(gòu)入了某米的一臺(tái)安卓機(jī),使用了一段時(shí)間安卓系統(tǒng)后,發(fā)現(xiàn)iOS系統(tǒng)的動(dòng)畫效果還是很好的。好吧進(jìn)入正題
創(chuàng)新互聯(lián)專注為客戶提供全方位的互聯(lián)網(wǎng)綜合服務(wù),包含不限于網(wǎng)站制作、成都做網(wǎng)站、邗江網(wǎng)絡(luò)推廣、微信小程序定制開發(fā)、邗江網(wǎng)絡(luò)營(yíng)銷、邗江企業(yè)策劃、邗江品牌公關(guān)、搜索引擎seo、人物專訪、企業(yè)宣傳片、企業(yè)代運(yùn)營(yíng)等,從售前售中售后,我們都將竭誠(chéng)為您服務(wù),您的肯定,是我們最大的嘉獎(jiǎng);創(chuàng)新互聯(lián)為所有大學(xué)生創(chuàng)業(yè)者提供邗江建站搭建服務(wù),24小時(shí)服務(wù)熱線:18982081108,官方網(wǎng)址:m.rwnh.cn
UIView Animation 實(shí)際上是對(duì) Core Animation(核心動(dòng)畫) 的封裝.使用UIView動(dòng)畫十分簡(jiǎn)單
UIViewAnimationOptions 動(dòng)畫效果枚舉
動(dòng)畫效果相關(guān)
時(shí)間函數(shù)曲線相關(guān)
轉(zhuǎn)場(chǎng)動(dòng)畫相關(guān)
增加關(guān)鍵幀的方法
UIViewKeyframeAnimationOptions 的枚舉值
關(guān)鍵幀動(dòng)畫栗子????
單個(gè)視圖的過渡效果
從舊視圖轉(zhuǎn)到新視圖的動(dòng)畫效果
fromView 會(huì)從父視圖中移除,并將toView 添加到父視圖中
相信各位讀了之前的兩篇文章,對(duì)pods的使用已經(jīng)相當(dāng)熟練了。不過在紛繁復(fù)雜的實(shí)際使用場(chǎng)景下,可能還是會(huì)遇到一些問題。本文就結(jié)合自己的實(shí)踐經(jīng)驗(yàn),做一些快問快答,希望大家能多多補(bǔ)充交流。話不多說,那我們就即刻開始吧!
pod系列文章
Cocoapods,讓iOS開發(fā)更簡(jiǎn)單(一):走近Cocoapods
Cocoapods,讓iOS開發(fā)更簡(jiǎn)單(二):創(chuàng)建私有庫
Cocoapods,讓iOS開發(fā)更簡(jiǎn)單(三):實(shí)踐經(jīng)驗(yàn)匯總
一文帶你快速分清靜態(tài)庫-動(dòng)態(tài)庫-Framework
一般推薦使用指定版本或范圍版本號(hào),以確保依賴的穩(wěn)定性。
總結(jié) :能用pod install解決問題的,就不要用pod update。因?yàn)閜od update會(huì)把依賴庫全部檢查一遍,不僅慢有時(shí)候還會(huì)出現(xiàn)坑。
忽略Pods警告,有些第三方Pod集成進(jìn)來會(huì)有一大堆警告信息,在Podfile中對(duì)應(yīng)的target或分組下加上關(guān)鍵字inhibit_all_warnings!就可以把警告忽略。
作用:
在pods中用frameworks替代.a靜態(tài)庫。
場(chǎng)景:
swift項(xiàng)目pods默認(rèn)開啟(use_frameworks!),OC項(xiàng)目pods默認(rèn)關(guān)閉(#use_frameworks!),同時(shí)需滿足以下兩點(diǎn),
解析:
swift工程依賴了OC工程的話,需要use_modular_headers!
示例:
為某個(gè) Pods 使用模塊化標(biāo)頭,可以使用以下語法:
pod 'TestPodLib', :modular_headers = true
另外,當(dāng)全局使用 use_modular_headers! 屬性時(shí),同時(shí)還可以使用以下方法從模塊化標(biāo)頭中排除特定的Pod:
pod 'TestPodLib', :modular_headers = false
版本格式:主版本號(hào).次版本號(hào).修訂號(hào),版本號(hào)遞增規(guī)則如下:
常用的方式調(diào)用pod中的素材是不生效的,因?yàn)槟J(rèn)是從mainBundle中讀取的,如
打在pod中的素材已經(jīng)不在mainBundle中而在對(duì)應(yīng)組件下的bundle 里面,所以應(yīng)該這么調(diào)用:
在用CocoaPods集成第三方庫之后,默認(rèn)情況下,使用類似#import XXX/YYY.h的方式引入第三方庫的頭文件。
pod search只會(huì)搜索本地緩存的庫,如果想搜索到最新的第三方框架或者某個(gè)框架的最新版本,必須先使用pod repo update。
iOS路由目前業(yè)內(nèi)流行的有兩大分類:1、基于URL或protocol的注冊(cè)調(diào)度型路由 2、runtime調(diào)度型路由
其中protocol類型的路由查的資料中目前只找到了一個(gè)MGJRouter,就是蘑菇街路由,但是這個(gè)主庫已經(jīng)被刪了,所以這個(gè)類型的就不再討論了。
下面為大家整理了一下這兩種類型路由各自的原理、優(yōu)缺點(diǎn)、常見的第三方庫等,參見下表:
下面我再針對(duì)表中常見的第三方庫的詳細(xì)使用方法進(jìn)行介紹:
5.5k Star
1.1.1.1:
在BaseViewController和BaseTabBarController中添加設(shè)置參數(shù)方法,供子方法繼承(統(tǒng)一處理)
1.1.1.2:添加接收到路由后的處理操作(統(tǒng)一處理)
一般放在AppDelegate中的didFinishLaunchingWithOptions方法中進(jìn)行配置;需要集中管理的話得自己去寫工具類統(tǒng)一調(diào)度
1.1.1.3:頁面處理傳參
HnxxtNewsParentViewController里繼承方法處理傳參(頁面各自處理)
1.1.2.1:跳轉(zhuǎn)到頁面,無參數(shù)(頁面各自處理)
1.1.2.2:跳轉(zhuǎn)到頁面,有參數(shù)(頁面各自處理)
1.1.2.2:跳轉(zhuǎn)到頁面,有參數(shù),指定present方式(頁面各自處理)
在AppDelegate中的 openURL 方法統(tǒng)一處理
JLRoutes的封裝
參考: iOS 組件化-路由解耦思想 JLRoutes 實(shí)戰(zhàn)篇(一)App內(nèi)控制器跳轉(zhuǎn)
GitHub工程
1.添加VC配置到路由表
在AppDelegate中的 openURL 方法統(tǒng)一處理
1.8k Star
1.3.1.1 在AppDelegate中的didFinishLaunchingWithOptions方法中進(jìn)行路由注冊(cè)及導(dǎo)航欄設(shè)置;需要集中管理的話得自己去寫工具類統(tǒng)一調(diào)度
1.3.1.2 在目標(biāo)UIViewController中實(shí)現(xiàn)方法:initWithRouterParams: ,也就是如果用這個(gè)庫,工程里的vc都得實(shí)現(xiàn)這個(gè)方法
在需要跳轉(zhuǎn)的地方調(diào)用:
查看源碼是沒有提供處理外部應(yīng)用打開當(dāng)前app的相關(guān)路由方法,只提供了一個(gè):openExternal:(NSString *)url 方法,該方法只是用來打開app外部應(yīng)用的方法。所以對(duì)于外部打開app處理還是同上述一致:
在AppDelegate中的 openURL 方法統(tǒng)一處理
1.6k Star
1.4.1.1 在AppDelegate的didFinishLaunchingWithOptions方法中進(jìn)行路由注冊(cè);統(tǒng)一管理也是需要自己定義工具類
在需要跳轉(zhuǎn)的地方調(diào)用
查看源碼也是沒有提供處理外部應(yīng)用打開當(dāng)前app的相關(guān)路由方法,所以對(duì)于外部打開app處理還是同上述一致:
在AppDelegate中的 openURL 方法統(tǒng)一處理
8 star
參考HHRouter實(shí)現(xiàn)的路由,優(yōu)化了傳參方式,不再通過url傳參,而是通過方法傳參
在AppDelegate的didFinishLaunchingWithOptions方法中進(jìn)行路由注冊(cè):
查看源碼也是沒有提供處理外部應(yīng)用打開當(dāng)前app的相關(guān)路由方法,所以對(duì)于外部打開app處理還是同上述一致:
在AppDelegate中的 openURL 方法統(tǒng)一處理
3.8k Star
假如路由目標(biāo)vc叫 HnxxtNewsParentViewController:
1、新建Target_Hnxxt類,在這個(gè)類里去寫方法提供HnxxtNewsParentViewController的實(shí)例
2、創(chuàng)建 CTMediator 的 Category,比如叫CTMediator+Hnxxt,在這個(gè)類里提供對(duì)外調(diào)用的路由方法
這個(gè)庫也不需要初始化操作;另外這里在Target_Hnxxt和CTMediator+Hnxxt中都對(duì)路由進(jìn)行了統(tǒng)一管理;Target_Hnxxt使CTMediator和具體的路由目標(biāo)類進(jìn)行了解耦,詳細(xì)示例如下:
在AppDelegate中的 openURL 方法進(jìn)行處理,思路也是將遠(yuǎn)程的url轉(zhuǎn)換為本地的跳轉(zhuǎn)方式
以上就是對(duì)目前iOS 比較流行的路由庫的籠統(tǒng)介紹,期間涉及到的第三方庫的使用細(xì)節(jié),還需要大家在用到的時(shí)候再仔細(xì)對(duì)照官方文檔和demo,也可以參考下面這些我總結(jié)的相關(guān)技術(shù)博客,比官方文檔更貼合實(shí)際使用:
參考資料:
iOS 組件化 —— 路由設(shè)計(jì)思路分析
iOS 組件化-路由解耦思想 JLRoutes 實(shí)戰(zhàn)篇(一)App內(nèi)控制器跳轉(zhuǎn)
routable-ios源碼解析
iOS開發(fā) — HHRouter路由數(shù)據(jù)傳遞開發(fā)分享
CTMediator: iOS應(yīng)用架構(gòu)談 組件化方案
CTMediator:在現(xiàn)有工程中實(shí)施基于CTMediator的組件化方案
CTMediator 的初體驗(yàn)
1、統(tǒng)一收鍵盤的方法
[[[UIApplication sharedApplication] keyWindow] endEditing:YES];
2、提示框
BBAlertView *alert = [[BBAlertView alloc] initWithStyle:BBAlertViewStyleDefault
Title:@"刪除訂單"
message:@"是否刪除訂單,"
customView:nil
delegate:self
cancelButtonTitle:L(@"取消")
otherButtonTitles:L(@"確認(rèn)")];
[alert setCancelBlock:^{
}];
[alert setConfirmBlock:^{
[self orderDidRemovePressDown:tempDic Index:index.section];
}];
[alert show];
3、圖片的自適應(yīng)功能
self.brandImage.contentMode = UIViewContentModeScaleAspectFit;
4、cocoaPods清除緩存問題
$ sudo rm -fr ~/.cocoapods/repos/master
$ pod setup
5、設(shè)置顯示鍵盤的樣式
textView.keyboardType =UIKeyboardTypeDefault;
//設(shè)置鍵盤右下角為完成(中文輸入法下)
textView.returnKeyType=UIReturnKeyDone;
6、輸出當(dāng)前時(shí)間
NSDateFormatter * dateFormatter=[[NSDateFormatter alloc]init];
[dateFormatter setDateFormat:@"yyyy-MM-dd HH:mm:ss.SSS"];
NSLog(@"當(dāng)前毫秒時(shí)間1==%@",[dateFormatter stringFromDate:[NSDate date]]);
7、顯示兩秒然后消失
UILabel * lab=[[UILabel alloc]initWithFrame:CGRectMake(60,Main_Screen_Height-64-49-60, Main_Screen_Width-120, 50)];
lab.backgroundColor=[UIColor grayColor];
ViewRadius(lab, 20);
lab.textAlignment=NSTextAlignmentCenter;
lab.text=@"請(qǐng)先進(jìn)行實(shí)名制驗(yàn)證";
[self.view addSubview:lab];
[UILabel animateWithDuration:2 animations:^{
lab.alpha=0;
}completion:^(BOOL finished) {
[lab removeFromSuperview];
}];
8、設(shè)置placeholder屬性的大小和顏色
[_phoneFie setValue:[UIColor grayColor] forKeyPath:@"_placeholderLabel.textColor"];
[_phoneFie setValue:[UIFont boldSystemFontOfSize:15] forKeyPath:@"_placeholderLabel.font"];
_phoneFie.returnKeyType=UIReturnKeyDone;
9、設(shè)置cell的交互完全不可以使用
//[cellTwo setUserInteractionEnabled:NO];
//設(shè)置cell不可以點(diǎn)擊,但是上面的子控件可以交互
cellTwo.selectionStyle=UITableViewCellSelectionStyleNone;
10、將textField的placeholder 屬性的字體向右邊移動(dòng)5
_field.leftView = [[UIView alloc] initWithFrame:CGRectMake(0, 0, 10*Width_375, _field.frame.size.height)];
_field.leftViewMode = UITextFieldViewModeAlways;
11、開新線程使按鈕上的時(shí)間變化
-(void)startTime{
__block int timeout=60; //倒計(jì)時(shí)時(shí)間
UIButton * btn=(UIButton *)[self.view viewWithTag:1000];
dispatch_queue_t queue = dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0);
dispatch_source_t _timer = dispatch_source_create(DISPATCH_SOURCE_TYPE_TIMER, 0, 0,queue);
dispatch_source_set_timer(_timer,dispatch_walltime(NULL, 0),1.0*NSEC_PER_SEC, 0); //每秒執(zhí)行
dispatch_source_set_event_handler(_timer, ^{
if(timeout=0){
dispatch_source_cancel(_timer);
dispatch_async(dispatch_get_main_queue(), ^{
[btn setTitle:@"發(fā)送驗(yàn)證碼" forState:UIControlStateNormal];
btn.enabled = YES;
});
}else{
//? int minutes = timeout / 60;
int miao = timeout % 60;
if (miao==0) {
miao = 60;
}
NSString *strTime = [NSString stringWithFormat:@"%.2d", miao];
dispatch_async(dispatch_get_main_queue(), ^{
[btn setTitle:[NSString stringWithFormat:@"剩余%@秒",strTime] forState:UIControlStateNormal];
btn.enabled = NO;
});
timeout--;
}
});
dispatch_resume(_timer);
}
12、隱藏TableView 中多余的行
UIView * view=[[UIView alloc]initWithFrame:CGRectZero];
[_tabelView setTableFooterView:view];
13、UIView添加背景圖片
UIImage * image=[UIImage imageNamed:@"friend750"];
headSeV.layer.contents=(id)image.CGImage;
14、UITableView取消選中狀態(tài)
[tableView deselectRowAtIndexPath:indexPath animated:YES];// 取消選中
15、帶屬性的字符串
NSFontAttributeName? 字體
NSParagraphStyleAttributeName? 段落格式
NSForegroundColorAttributeName? 字體顏色
NSBackgroundColorAttributeName? 背景顏色
NSStrikethroughStyleAttributeName 刪除線格式
NSUnderlineStyleAttributeName? ? ? 下劃線格式
NSStrokeColorAttributeName? ? ? ? 刪除線顏色
NSStrokeWidthAttributeName 刪除線寬度
NSShadowAttributeName? 陰影
1.? 使用實(shí)例
UILabel *testLabel = [[UILabel alloc]initWithFrame:CGRectMake(0, 100, 320, 30)];
testLabel.backgroundColor = [UIColor lightGrayColor];
testLabel.textAlignment = NSTextAlignmentCenter;
NSMutableAttributedString *AttributedStr = [[NSMutableAttributedString alloc]initWithString:@"今天天氣不錯(cuò)呀"];
[AttributedStr addAttribute:NSFontAttributeName
value:[UIFont systemFontOfSize:16.0]
range:NSMakeRange(2, 2)];
[AttributedStr addAttribute:NSForegroundColorAttributeName
value:[UIColor redColor]
range:NSMakeRange(2, 2)];
testLabel.attributedText = AttributedStr;
[self.view addSubview:testLabel];
16、加大按鈕的點(diǎn)擊范圍
把UIButton的frame 設(shè)置的大一些,然后給UIButton設(shè)置一個(gè)小些的圖片
[tmpBtn setImageEdgeInsets:UIEdgeInsetsMake(5, 5, 5, 5)];
// 注意這里不能用setBackgroundImage
[tmpBtn setImage:[UIImage imageNamed:@"testBtnImage"] forState:UIControlStateNormal];
17、//避免self的強(qiáng)引用
__weak ViewController *weakSelf = self;
18、//類別的創(chuàng)建
command +n ——Objective-C File———(File Type? 選擇是類別還是擴(kuò)展)———(Class? 選擇為哪個(gè)控件寫類別)
19、修改UITableview 滾動(dòng)條顏色的方法
self.tableView.indicatorStyle=UIScrollViewIndicatorStyleWhite;
20、利用UIWebView顯示pdf文件
webView = [[UIWebView alloc]initWithFrame:CGRectMake(0, 0, 320, 480)];
[webView setDelegate:self];
[webView setScalesPageToFit:YES];
[webViewsetAutoresizingMask:UIViewAutoresizingFlexibleWidth |UIViewAutoresizingFlexibleHeight];
[webView setAllowsInlineMediaPlayback:YES];
[self.view addSubview:webView];
NSString *pdfPath = [[NSBundle mainBundle]pathForResource:@"ojc" ofType:@"pdf"];
NSURL *url = [NSURLfileURLWithPath:pdfPath];
NSURLRequest *request = [NSURLRequestrequestWithURL:url
cachePolicy:NSURLRequestUseProtocolCachePolicy
timeoutInterval:5];
[webView loadRequest:request];
21、將plist文件中的數(shù)據(jù)賦給數(shù)組
NSString *thePath = [[NSBundle mainBundle]pathForResource:@"States" ofType:@"plist"];
NSArray *array = [NSArrayarrayWithContentsOfFile:thePath];
22、隱藏狀態(tài)欄
[[UIApplication shareApplication]setStatusBarHidden: YES animated:NO];
23、給navigation? Bar? 設(shè)置title顏色
UIColor *whiteColor = [UIColor whiteColor];
NSDictionary *dic = [NSDictionary dictionaryWithObject:whiteColor forKey:NSForegroundColorAttributeName];
[self.navigationController.navigationBar setTitleTextAttributes:dic];
24、使用AirDrop 進(jìn)行分享
NSArray *array = @[@"test1", @"test2"];
UIActivityViewController *activityVC = [[UIActivityViewController alloc] initWithActivityItems:array applicationActivities:nil];
[self presentViewController:activityVC animated:YES
completion:^{
NSLog(@"Air");
}];
25、把tableview里面Cell的小對(duì)勾的顏色改成別的顏色
_mTableView.tintColor = [UIColor redColor];
26、UITableView去掉分割線
_tableView.separatorStyle = NO;
27、正則判斷手機(jī)號(hào)碼地址格式
- (BOOL)isMobileNumber:(NSString *)mobileNum {
//? ? 電信號(hào)段:133/153/180/181/189/177
//? ? 聯(lián)通號(hào)段:130/131/132/155/156/185/186/145/176
//? ? 移動(dòng)號(hào)段:134/135/136/137/138/139/150/151/152/157/158/159/182/183/184/187/188/147/178
//? ? 虛擬運(yùn)營(yíng)商:170
NSString *MOBILE = @"^1(3[0-9]|4[57]|5[0-35-9]|8[0-9]|7[06-8])\\d{8}$";
NSPredicate *regextestmobile = [NSPredicate predicateWithFormat:@"SELF MATCHES %@", MOBILE];
return [regextestmobile evaluateWithObject:mobileNum];
}
28、控制交易密碼位數(shù)
-(BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string{
if (textField.text.length =6){
[MBProgressHUD showMessage:@"密碼為6位" afterDelay:1.8];
return NO;
}
return YES;
}
29、判斷是不是空
if ([real_name isKindOfClass:[NSNull class]] ) {
return NO;}
30、點(diǎn)擊號(hào)碼撥打電話
[[UIApplication sharedApplication] openURL:[NSURL URLWithString:@"tel://400966220"]];
31、控制UITabbar的選擇哪一個(gè)
[self.tabBarController setSelectedIndex:1];
32、獲取當(dāng)前App的版本號(hào)
NSDictionary?*infoDictionary?=?[[NSBundle?mainBundle]?infoDictionary];
CFShow(infoDictionary);
//?app名稱
NSString?*app_Name?=?[infoDictionary?objectForKey:@"CFBundleDisplayName"];
//?app版本
NSString?*app_Version?=?[infoDictionary?objectForKey:@"CFBundleShortVersionString"];
//?app?build版本
NSString?*app_build?=?[infoDictionary?objectForKey:@"CFBundleVersion"];
33、蘋果app權(quán)限NSPhotoLibraryUsageDescriptionApp需要您的同意,才能訪問相冊(cè)NSCameraUsageDescriptionApp需要您的同意,才能訪問相機(jī)NSMicrophoneUsageDescriptionApp需要您的同意,才能訪問麥克風(fēng)NSLocationUsageDescriptionApp需要您的同意,才能訪問位置NSLocationWhenInUseUsageDescriptionApp需要您的同意,才能在使用期間訪問位置NSLocationAlwaysUsageDescriptionApp需要您的同意,才能始終訪問位置NSCalendarsUsageDescriptionApp需要您的同意,才能訪問日歷NSRemindersUsageDescriptionApp需要您的同意,才能訪問提醒事項(xiàng)NSMotionUsageDescriptionApp需要您的同意,才能訪問運(yùn)動(dòng)與健身NSHealthUpdateUsageDescriptionApp需要您的同意,才能訪問健康更新NSHealthShareUsageDescriptionApp需要您的同意,才能訪問健康分享NSBluetoothPeripheralUsageDescriptionApp需要您的同意,才能訪問藍(lán)牙NSAppleMusicUsageDescriptionApp需要您的同意,才能訪問媒體資料庫
34、控件設(shè)置邊框
_describText.layer.borderColor = [[UIColor colorWithRed:215.0 / 255.0 green:215.0 / 255.0 blue:215.0 / 255.0 alpha:1] CGColor];
_describText.layer.borderWidth = 1.0;
_describText.layer.cornerRadius = 4.0;
_describText.clipsToBounds = YES;
35、//隱藏電池條的方法
-(BOOL)prefersStatusBarHidden{
return YES;
}
36、延時(shí)操作
[NSThread sleepForTimeInterval:2];
方法二:
[self performSelector:@selector(delayMethod) withObject:nil afterDelay:1.5];
37、系統(tǒng)風(fēng)火輪:
[UIApplication sharedApplication].networkActivityIndicatorVisible = NO; //隱藏
38、//didSelectRowAtIndexPath:方法里面找到當(dāng)前的Cell
AssessMentCell * cell = [tableView cellForRowAtIndexPath:indexPath];
39、navigation上返回按鈕的顏色以及返回按鈕后面文字去掉
//返回按鈕后邊文字去掉
[[UIBarButtonItem appearance] setBackButtonTitlePositionAdjustment:UIOffsetMake(0, -60)
forBarMetrics:UIBarMetricsDefault];
//設(shè)置左上角返回按鈕的顏色
self.navigationController.navigationBar.tintColor = UIColorFromRGB(0x666666);
40、lineBreakMode //設(shè)置文字過長(zhǎng)時(shí)的顯示格式
label.lineBreakMode = NSLineBreakByCharWrapping;以字符為顯示單位顯
示,后面部分省略不顯示。
label.lineBreakMode = NSLineBreakByClipping;剪切與文本寬度相同的內(nèi)
容長(zhǎng)度,后半部分被刪除。
label.lineBreakMode = NSLineBreakByTruncatingHead;前面部分文字
以……方式省略,顯示尾部文字內(nèi)容。
label.lineBreakMode = NSLineBreakByTruncatingMiddle;中間的內(nèi)容
以……方式省略,顯示頭尾的文字內(nèi)容。
label.lineBreakMode = NSLineBreakByTruncatingTail;結(jié)尾部分的內(nèi)容
以……方式省略,顯示頭的文字內(nèi)容。
label.lineBreakMode = NSLineBreakByWordWrapping;以單詞為顯示單位顯
示,后面部分省略不顯示。
分享名稱:ios開發(fā)總結(jié),ios分析框架
分享地址:http://m.rwnh.cn/article42/dsdhgec.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供標(biāo)簽優(yōu)化、、網(wǎng)站改版、域名注冊(cè)、軟件開發(fā)、企業(yè)建站
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)