<address id="ttjl9"></address>

      <noframes id="ttjl9"><address id="ttjl9"><nobr id="ttjl9"></nobr></address>
      <form id="ttjl9"></form>
        <em id="ttjl9"><span id="ttjl9"></span></em>
        <address id="ttjl9"></address>

          <noframes id="ttjl9"><form id="ttjl9"></form>

          首頁

          優秀UI界面設計評析

          藍藍設計的小編

          男生運動鞋商店支付界面,顏色搭配非常舒服,鞋子攝影也很漂亮,字體字號運用非常到位。

          React Native原生與JS層交互

          seo達人

          如果您想訂閱本博客內容,每天自動發到您的郵箱中, 請點這里

          最近在對《React Native移動開發實戰》一書進行部分修訂和升級。在React Native開發中,免不了會涉及到原生代碼與JS層的消息傳遞等問題,那么React Native究竟是如何實現與原生的互相操作的呢?

          原生給React Native傳參

          原生給React Native傳值

          原生給JS傳值,主要依靠屬性,也就是通過initialProperties,這個RCTRootView的初始化函數的參數來完成。通過RCTRootView的初始化函數你可以將任意屬性傳遞給React Native應用,參數initialProperties必須是NSDictionary的一個實例。RCTRootView有一個appProperties屬性,修改這個屬性,JS端會調用相應的渲染方法。

          使用RCTRootView將React Natvie視圖封裝到原生組件中。RCTRootView是一個UIView容器,承載著React Native應用。同時它也提供了一個聯通原生端和被托管端的接口。

          例如有下面一段OC代碼:

          NSURL *jsCodeLocation;
          
            jsCodeLocation = [[RCTBundleURLProvider sharedSettings] jsBundleURLForBundleRoot:@"index.ios" fallbackResource:nil]; NSArray *imageList = @[@"http://foo.com/bar1.png",
                                   @"http://foo.com/bar2.png"]; NSDictionary *wjyprops = @{@"images" : imageList};
          
            RCTRootView *rootView = [[RCTRootView alloc] initWithBundleURL:jsCodeLocation
                                                                moduleName:@"ReactNativeProject" initialProperties:wjyprops
                                                             launchOptions:launchOptions];
              
          • 1
          • 2
          • 3
          • 4
          • 5
          • 6
          • 7
          • 8
          • 9
          • 10
          • 11
          • 12
          • 13
          • 14

          下面是JS層的處理:

          import React, { Component } from 'react'; import {
            AppRegistry,
            View,
            Image,
          } from 'react-native'; class ImageBrowserApp extends Component { renderImage(imgURI) { return (
                <Image source={{uri: imgURI}} />
              );
            }
            render() { return (
                <View>
                  {this.props.images.map(this.renderImage)}
                </View>
              );
            }
          }
          
          AppRegistry.registerComponent('ImageBrowserApp', () => ImageBrowserApp);
              
          • 1
          • 2
          • 3
          • 4
          • 5
          • 6
          • 7
          • 8
          • 9
          • 10
          • 11
          • 12
          • 13
          • 14
          • 15
          • 16
          • 17
          • 18
          • 19
          • 20
          • 21
          • 22
          • 23

          不管OC中關于initialProperties的名字叫什么,在JS中都是this.props開頭,然后接下來才是key名字。

          {"rootTag":1,"initialProps":{"images":["http://foo.com/bar1.png","http://foo.com/bar2.png"]}}. 
              
          • 1

          使用appProperties進行參數傳遞

          RCTRootView同樣提供了一個可讀寫的屬性appProperties。在appProperties設置之后,React Native應用將會根據新的屬性重新渲染。當然,只有在新屬性和舊的屬性有更改時更新才會被觸發。

          NSArray *imageList = @[@"http://foo.com/bar3.png", @"http://foo.com/bar4.png"]; rootView.appProperties = @{@"images" : imageList};
              
          • 1
          • 2
          • 3

          可以隨時更新屬性,但是更新必須在主線程中進行,讀取則可以在任何線程中進行。

          React Native執行原生方法及回調

          React Native執行原生方法

          .h的文件代碼:

          #import <Foundation/Foundation.h> #import <RCTBridgeModule.h> @interface wjyTestManager : NSObject<RCTBridgeModule> @end
              
          • 1
          • 2
          • 3
          • 4
          • 5
          • 6
          • 7

          .m的文件代碼:

          #import "wjyTestManager.h" @implementation wjyTestManager RCT_EXPORT_MODULE();
          
          RCT_EXPORT_METHOD(doSomething:(NSString *)aString withA:(NSString *)a)
          { NSLog(@"%@,%@",aString,a);
          } @end
              
          • 1
          • 2
          • 3
          • 4
          • 5
          • 6
          • 7
          • 8
          • 9
          • 10
          • 11
          • 12

          為了實現RCTBridgeModule協議,你的類需要包含RCT_EXPORT_MODULE()宏。這個宏也可以添加一個參數用來指定在Javascript中訪問這個模塊的名字。如果你不指定,默認就會使用這個Objective-C類的名字。

          并且必須明確的聲明要給Javascript導出的方法,否則React Native不會導出任何方法。OC中聲明要給Javascript導出的方法,通過RCT_EXPORT_METHOD()宏來實現。

          import React, { Component } from 'react';
          import {
            AppRegistry,
            StyleSheet,
            Text,
            View,
            Alert,
            TouchableHighlight,
          } from 'react-native';
          
          import {
            NativeModules,
            NativeAppEventEmitter
          } from 'react-native'; var CalendarManager = NativeModules.wjyTestManager; class ReactNativeProject extends Component { render() { return (
                    <TouchableHighlight onPress={()=>CalendarManager.doSomething('sdfsdf','sdfsdfs')}>
                    <Text style={styles.text}
                >點擊 </Text>
                    </TouchableHighlight>
          
                  );
                }
          } const styles = StyleSheet.create({
          text: {
            flex: 1,
            marginTop: 55,
            fontWeight: 'bold' },
          });
          
          AppRegistry.registerComponent('ReactNativeProject', () => ReactNativeProject);
              
          • 1
          • 2
          • 3
          • 4
          • 5
          • 6
          • 7
          • 8
          • 9
          • 10
          • 11
          • 12
          • 13
          • 14
          • 15
          • 16
          • 17
          • 18
          • 19
          • 20
          • 21
          • 22
          • 23
          • 24
          • 25
          • 26
          • 27
          • 28
          • 29
          • 30
          • 31
          • 32
          • 33
          • 34
          • 35
          • 36
          • 37
          • 38

          要用到NativeModules則要引入相應的命名空間import { NativeModules } from ‘react-native’;然后再進行調用CalendarManager.doSomething(‘sdfsdf’,’sdfsdfs’);橋接到Javascript的方法返回值類型必須是void。React Native的橋接操作是異步的,所以要返回結果給Javascript,你必須通過回調或者觸發事件來進行。

          傳參并回調

          RCT_EXPORT_METHOD(testCallbackEvent:(NSDictionary *)dictionary callback:(RCTResponseSenderBlock)callback)
          { NSLog(@"當前名字為:%@",dictionary); NSArray *events=@[@"callback ", @"test ", @" array"];
            callback(@[[NSNull null],events]);
          }
              
          • 1
          • 2
          • 3
          • 4
          • 5
          • 6

          說明:第一個參數代表從JavaScript傳過來的數據,第二個參數是回調方法; 
          JS層代碼:

          import {
            NativeModules,
            NativeAppEventEmitter
          } from 'react-native'; var CalendarManager = NativeModules.wjyTestManager; class ReactNativeProject extends Component { render() { return (
                    <TouchableHighlight onPress={()=>{CalendarManager.testCallbackEvent(
                       {'name':'good','description':'http://www.lcode.org'},
                       (error,events)=>{ if(error){
                             console.error(error);
                           }else{
                             this.setState({events:events});
                           }
                     })}}
                   >
                    <Text style={styles.text}
                >點擊 </Text>
                    </TouchableHighlight>
          
                  );
                }
          }
              
          • 1
          • 2
          • 3
          • 4
          • 5
          • 6
          • 7
          • 8
          • 9
          • 10
          • 11
          • 12
          • 13
          • 14
          • 15
          • 16
          • 17
          • 18
          • 19
          • 20
          • 21
          • 22
          • 23
          • 24
          • 25
          • 26
          • 27

          參數類型說明

          RCT_EXPORT_METHOD 支持所有標準JSON類型,包括:

          • string (NSString)
          • number (NSInteger, float, double, CGFloat, NSNumber)
          • boolean (BOOL, NSNumber)
          • array (NSArray) 包含本列表中任意類型
          • object (NSDictionary) 包含string類型的鍵和本列表中任意類型的值
          • function (RCTResponseSenderBlock)

          除此以外,任何RCTConvert類支持的的類型也都可以使用(參見RCTConvert了解更多信息)。RCTConvert還提供了一系列輔助函數,用來接收一個JSON值并轉換到原生Objective-C類型或類。例如:

          #import "RCTConvert.h" #import "RCTBridge.h" #import "RCTEventDispatcher.h" //  對外提供調用方法,為了演示事件傳入屬性字段 RCT_EXPORT_METHOD(testDictionaryEvent:(NSString *)name details:(NSDictionary *) dictionary)
          { NSString *location = [RCTConvert NSString:dictionary[@"thing"]]; NSDate *time = [RCTConvert NSDate:dictionary[@"time"]]; NSString *description=[RCTConvert NSString:dictionary[@"description"]]; NSString *info = [NSString stringWithFormat:@"Test: %@\nFor: %@\nTestTime: %@\nDescription: %@",name,location,time,description]; NSLog(@"%@", info);
          }
              
          • 1
          • 2
          • 3
          • 4
          • 5
          • 6
          • 7
          • 8
          • 9
          • 10
          • 11
          • 12
          • 13
          • 14

          iOS原生訪問React Native

          如果需要從iOS原生方法發送數據到JavaScript中,那么使用eventDispatcher。例如:

          #import "RCTBridge.h" #import "RCTEventDispatcher.h" @implementation CalendarManager @synthesize bridge = _bridge; //  進行設置發送事件通知給JavaScript端 - (void)calendarEventReminderReceived:(NSNotification *)notification
          { NSString *name = [notification userInfo][@"name"];
              [self.bridge.eventDispatcher sendAppEventWithName:@"EventReminder" body:@{@"name": name}];
          } @end
              
          • 1
          • 2
          • 3
          • 4
          • 5
          • 6
          • 7
          • 8
          • 9
          • 10
          • 11
          • 12
          • 13
          • 14
          • 15
          • 16

          在JavaScript中可以這樣訂閱事件,通常需要在componentWillUnmount函數中取消事件的訂閱。

          import { NativeAppEventEmitter } from 'react-native';
          
          var subscription = NativeAppEventEmitter.addListener( 'EventReminder',
            (reminder) => console.log(reminder.name)
          ); ... // 千萬不要忘記忘記取消訂閱, 通常在componentWillUnmount函數中實現。
          subscription.remove();
              
          • 1
          • 2
          • 3
          • 4
          • 5
          • 6
          • 7
          • 8
          • 9

          用NativeAppEventEmitter.addListener中注冊一個通知,之后再OC中通過bridge.eventDispatcher sendAppEventWithName發送一個通知,這樣就形成了調用關系。

          藍藍設計www.syprn.cn )是一家專注而深入的界面設計公司,為期望卓越的國內外企業提供卓越的UI界面設計、BS界面設計 、 cs界面設計 、 ipad界面設計 、 包裝設計 、 圖標定制 、 用戶體驗 、交互設計、 網站建設 平面設計服務

          ofo《我們看過的世界杯》H5

          資深UI設計者

          如果您想訂閱本博客內容,每天自動發到您的郵箱中, 請點這里

          項目背景:為了配合世界杯做的H5活動,主題是DIY你的世界杯時刻                                      

          玩法:選擇自己看世界杯的場景,可以在畫面當中添加食物和自定義的小元素,另外根據場景的變換人物的腿也可以選擇哦                                                 

          項目周期大概半個月,和團隊的小伙伴一起完成的,感謝@珊,@暖暖,@明明   

          使用工具包括sketch、ps、手繪板                                                                    

           

          ps:做H5真的是很累,工作量大,畫的手疼,不過也積累了很多的經驗,上線了好開心!

          請登錄并驗證郵箱后查看原圖請登錄并驗證郵箱后查看原圖請登錄并驗證郵箱后查看原圖請登錄并驗證郵箱后查看原圖請登錄并驗證郵箱后查看原圖請登錄并驗證郵箱后查看原圖請登錄并驗證郵箱后查看原圖請登錄并驗證郵箱后查看原圖請登錄并驗證郵箱后查看原圖

          藍藍設計www.syprn.cn )是一家專注而深入的界面設計公司,為期望卓越的國內外企業提供卓越的UI界面設計、BS界面設計  cs界面設計 、 ipad界面設計  包裝設計 、 圖標定制  用戶體驗 、交互設計、 網站建設 、平面設計服務



          前端工程師必備實用網站

          周周

          素材類網站


          千庫網,一個免費下載圖片素材的網站:http://588ku.com/ 
          千庫網.jpg.png


          Unsplash是一個分享免費高質量照片的網站,照片分辨率都挺大,而且都是真實的攝影師作品,圖片多是風景和靜物:https://unsplash.com/ 

          Unsplash.jpg.pngUnsplash2.jpg.png

          插件類網站

          jq22分享jQuery插件和提供各種jQuery的詳細使用方法,在線預覽,jQuery插件下載及教程http://www.jq22.com/

          jq22.jpg.png


          http://www.htmleaf.com/ 這個網站與上一個網站類似,也提供了大量的jQuery插件

                          htmleaf.jpg.png

          layui,這是一個強大的模塊化前端框架http://www.layui.com/

                       layui1.jpg.png

          layui2.jpg.png

          H-ui,端框架,一個輕量級前端框架,簡單免費,兼容性好,服務中國網站:http://www.h-ui.net/index.shtml

          H-ui.jpg.png 

          字體類網站

          有字庫,一個免下載字體,直接在線引用字體的網站http://www.youziku.com/onlinefont/index

          有字庫.jpg.png



          PS字體庫,包含了幾乎所有類型的字體,下載好安裝,PS中就可以使用了:http://www.psjia.com/pssc/fontxz/list_18_3.html


                         PS字體庫.png

          圖標類網站

          iconfont,這是阿里巴巴旗下的圖標庫網站,直接搜索關鍵詞就可以找到大批的圖標。下載圖標的時候我們還可以選擇顏色、大小、格式,根據自己的需要下載就好了:http://www.iconfont.cn/plus

                             iconfont.jpg.png

          easyicon,這也是一個非常有名的圖標庫,與上面那個不同的是,這里的圖標不是單一顏色的,而是設計好的顏色。下載圖標也很簡單,直接點擊對應圖標上面的格式就可以下載:http://www.easyicon.net/iconsearch/ios/

                            easyicon.jpg.png

          奧森圖標(Font Awesome),提供豐富的矢量字體圖標—通過CSS可以任意控制所有圖標的大小 ,顏色,陰影:http://www.thinkcmf.com/font/search.html

                          奧森圖標.jpg.png

                           奧森圖標1.jpg.png

          配色類網站

          http://colorhunt.co這個網站給我們提供了很多的配色方案,我們直接使用就OK了。

          使用方法也很簡單,鼠標移動到對應的顏色上,我們就可以看到顏色的十六進制碼,復制這個顏色到工具里就可以使用了。

                          colorhunt.jpg.png

          https://webgradients.com/, 180種漸變方案供你選擇,還可以直接復制CSS樣式應用到網頁中。

                        webgradients.jpg.png

          adobe這個是Adobe公司出的,他提供了多種配色方案。我們點擊圓盤中間的點,就可以調整出我們想要的配色方案:https://color.adobe.com/zh/create/color-wheel

                          Adobe.jpg.png

          http://www.colorhunter.com/這是一個提取現有圖片配色方案的工具。我們上傳一張圖片,它就會幫我們把圖片的配色提取出來供我們使用。

                          colorhunt.jpg.png

          bootcss,這個網站是為WEB設計,開發中經常用到的安全色。網站內列出了顏色的十六進制碼和RGB碼,復制粘貼就可以了:http://www.bootcss.com/p/websafecolors/

                         bootcss..jpg.png

          sioe這是一個在線RGB和十六進制顏色碼轉換工具。在對應的位置填入十六進制代碼,點擊轉換,我們就可以獲取到RGB顏色的代碼了http://www.sioe.cn/yingyong/yanse-rgb-16/

                        sioe.jpg.png




          2018年UI設計趨勢概覽

          博博

          2018年UI設計趨勢概覽

          嗨兔科技 2018-06-11 10:41:59

          如果您想訂閱本博客內容,每天自動發到您的郵箱中, 請點這里


          互聯網產品的用戶界面設計趨勢是根據用戶的不同需求而不斷變化的。在仔細分析了過去幾年用戶界面設計的趨勢和創新之后,我們可以發現其背后的一些規律,2018年UI界面設計的趨勢如下。

          2018年UI設計趨勢概覽

          漸變色

          在過去的幾年里,越來越多的設計師在設計作品時采用了色彩漸變的方法,今年的流體漸變更是風靡全球。即使你只選擇了一種顏色,也可以在色彩漸變和不同圖片的幫助下,營造出出豐富的層次結構感,繪制出一幅令人賞心悅目的畫面。因此,色彩漸變的流行之風不僅在席卷了2017年整年,還將會在2018年繼續流行下去。

          2018年UI設計趨勢概覽

          icon由線轉面、刻畫細節

          現在的ios12中,采用了面性圖標,未選中和選中狀態只有顏色上的區分,并且圖標更加圓潤。目前很多用戶界面已經給頁面底部標簽欄的icon加上微動效底部標簽欄icon不僅有微動效,十分有意思,符合當下95后00后的用戶心態。同時細節的設計帶給用戶的感受也會上一個檔次。

          2018年UI設計趨勢概覽

          透明度+重疊

          字體、圖形以及顏色的重疊,不僅可以使界面看上去更加醒目鮮明,還可以營造出一種空間感。 相同元素的重疊,再輔以陰影,也會使整個APP界面的設計產生更多的奇妙感,牢牢抓住用戶眼球,給他們留下深刻印象。因此,用戶體驗設計中,不同元素的重疊將會成為2018年的趨勢。

          2018年UI設計趨勢概覽

          卡片+投影相結合

          ios12中采用了大圓角卡片設計,它不再像過去MD中的小圓角那樣呆板,大圓角讓設計更加輕快大氣。相信大家已經看到了很多卡片都使用了投影這一手法,輕微的、似有似無的投影,不會被用戶立即察覺,但是會給設計增加深度,形成層疊的關系,更加醒目,可以更好的抓住用戶的注意力。

          2018年UI設計趨勢概覽

          插畫風格

          插畫風格運用的越來越廣泛,適用于app當中的啟動頁、缺省頁、banner圖、專題頭圖、彈窗插畫、icon等等,UI界面有各式各樣的插畫風格——如手繪風格、簡約風格、MBE風格、剪紙風格和孟菲斯風格等。這些插畫風格的使用不僅使APP更加有趣和與眾不同,同時也賦予了用戶界面個性,這就在界面設計層出不窮的當下能夠給用戶留下更為深刻的印象。

          2018年UI設計趨勢概覽

          較強的顏色或字體大小對比

          強烈的顏色或字體對比也可以幫助設計師設計出優秀的用戶界面來吸引用戶的注意。例如,添加不同樣式、類型、大小的字體,也可以傳遞層次和空間的感覺。而不同類型和風格的配色也會形成鮮明的對比,使整個設計更加豐富多彩和引人注目。

          2018年UI設計趨勢概覽

          3D效果正流行

          今年C4D大熱,相信大家已經感受到了,今年雙十一很多商家都使用了3D效果,有的還加上了動效,可以讓你全方位、多角度、更加真實的觀察商品。目前還不會C4D的設計師們,為了提升你的競爭力,有必要學起來了,畢竟技多不壓身。

          2018年UI設計趨勢概覽

          交互動效

          給APP的圖標、字體、照片和按鈕添加動畫或交互總是對用戶有著積極的影響,因為它能帶用戶更多愉快的體驗。它的幾點特性:快速且流暢、恰到好處的反饋、提升操作感受、提供良好的視覺效果。所以這一趨勢在2018年還將繼續流行下去。

          2018年UI設計趨勢概覽

          動態視頻

          一般小視頻使用在啟動頁多用于第一次打開app的場景,對用戶的代入感較強再如由動態圖片轉變成動態視頻,圖片中有少量的動態元素,仿佛賦予圖片生命,比較唯美和貼近現實。手機banner設計上也會采用動態視頻進行展現,方便360度的查看商品,刺激你剁手的欲望。

          2018年UI設計趨勢概覽

          VR/AR/VUI是未來的大趨勢

          眾所周知,現在VR(虛擬現實)和AR(增強現實)VUI(語音交互設計)大火,它們的核心都是計算機視覺和聽覺。VR目前在娛樂領域被使用,而AR將會真正影響我們的工作和生活,多用于多媒體、市場營銷、教育等方面。VUI在醫療和戶外活動方面會發揮出前所未有的用戶超級體驗。

          2018年UI設計趨勢概覽

          我們為創造者和變革者而生,我們幫助企業制定用戶體驗策略,為用戶創造精彩的數字體驗,并通過品牌設計與用戶建立情感的連接,用設計驅動商業策略的成功。

          2018年UI設計趨勢概覽


          藍藍設計www.syprn.cn )是一家專注而深入的界面設計公司,為期望卓越的國內外企業提供卓越的UI界面設計、BS界面設計 、 cs界面設計 、 ipad界面設計 、 包裝設計 、 圖標定制 、 用戶體驗 、交互設計、 網站建設 、平面設計服務




          Win10最具雄心的UI實驗,微軟砍掉了

          藍藍設計的小編

          IT之家6月28日消息 今天微軟推送了的Windows 10 RS5快速預覽版17704系統,在該版本中,微軟刪除了Sets窗口管理功能,這是一種全新的任務型分組的Windows UI多窗口。被譽為Windows 95以來最大窗口UI變動。

          日歷

          鏈接

          個人資料

          藍藍設計的小編 http://www.syprn.cn

          存檔

          亚洲va欧美va天堂v国产综合