Repository: incubator-weex
Updated Branches:
  refs/heads/master a90a1ed17 -> bfbddecf6


[WEEX-173][iOS] fix iconfont draw failed sometimes

 the order of drawing text and the action of building font-family in javaScript 
is not reliable,
so the observer needs to be added to every text component  which specify the 
font-family,
when the the custom font download finish, redraw action will compare the 
font-family with
font-family of text who received notification  and then execute redrawing 
action.

Bug: 173


Project: http://git-wip-us.apache.org/repos/asf/incubator-weex/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-weex/commit/bfbddecf
Tree: http://git-wip-us.apache.org/repos/asf/incubator-weex/tree/bfbddecf
Diff: http://git-wip-us.apache.org/repos/asf/incubator-weex/diff/bfbddecf

Branch: refs/heads/master
Commit: bfbddecf6b5c8ecf16d2df33984f877f6201e70a
Parents: a90a1ed
Author: acton393 <zhangxing610...@gmail.com>
Authored: Wed Dec 20 11:35:13 2017 +0800
Committer: acton393 <zhangxing610...@gmail.com>
Committed: Wed Dec 20 11:35:13 2017 +0800

----------------------------------------------------------------------
 .../WeexSDK/Sources/Component/WXTextComponent.m | 28 ++++----------------
 1 file changed, 5 insertions(+), 23 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/bfbddecf/ios/sdk/WeexSDK/Sources/Component/WXTextComponent.m
----------------------------------------------------------------------
diff --git a/ios/sdk/WeexSDK/Sources/Component/WXTextComponent.m 
b/ios/sdk/WeexSDK/Sources/Component/WXTextComponent.m
index 32828c3..13ae1ba 100644
--- a/ios/sdk/WeexSDK/Sources/Component/WXTextComponent.m
+++ b/ios/sdk/WeexSDK/Sources/Component/WXTextComponent.m
@@ -127,7 +127,6 @@ CGFloat WXTextDefaultLineThroughWidth = 1.2;
     CGFloat _letterSpacing;
     BOOL _truncationLine; // support trunk tail
     
-    BOOL _needsRemoveObserver;
     NSAttributedString * _ctAttributedString;
     NSString *_wordWrap;
     
@@ -155,7 +154,6 @@ CGFloat WXTextDefaultLineThroughWidth = 1.2;
     self = [super initWithRef:ref type:type styles:styles 
attributes:attributes events:events weexInstance:weexInstance];
     if (self) {
         // just for coretext and textkit render replacement
-        _needsRemoveObserver = NO;
         pthread_mutexattr_init(&(_propertMutexAttr));
         pthread_mutexattr_settype(&(_propertMutexAttr), 
PTHREAD_MUTEX_RECURSIVE);
         pthread_mutex_init(&(_ctAttributedStringMutex), &(_propertMutexAttr));
@@ -190,7 +188,7 @@ CGFloat WXTextDefaultLineThroughWidth = 1.2;
 
 - (void)dealloc
 {
-    if (_needsRemoveObserver) {
+    if (_fontFamily) {
         [[NSNotificationCenter defaultCenter] removeObserver:self 
name:WX_ICONFONT_DOWNLOAD_NOTIFICATION object:nil];
     }
     pthread_mutex_destroy(&_ctAttributedStringMutex);
@@ -412,16 +410,8 @@ do {\
     }
     
     if (_fontFamily) {
-        NSString * keyPath = [NSString stringWithFormat:@"%@.tempSrc", 
_fontFamily];
-        NSString * fontSrc = [[[WXRuleManager sharedInstance] 
getRule:@"fontFace"] valueForKeyPath:keyPath];
-        keyPath = [NSString stringWithFormat:@"%@.localSrc", _fontFamily];
-        NSString * fontLocalSrc = [[[WXRuleManager sharedInstance] 
getRule:@"fontFace"] valueForKeyPath:keyPath];
-        //custom localSrc is cached
-        if (!fontLocalSrc && fontSrc) {
-            // if use custom font, when the custom font download finish, 
refresh text.
-            _needsRemoveObserver = YES;
-            [[NSNotificationCenter defaultCenter] addObserver:self 
selector:@selector(repaintText:) name:WX_ICONFONT_DOWNLOAD_NOTIFICATION 
object:nil];
-        }
+        // notification received when custom icon font file download finish
+        [[NSNotificationCenter defaultCenter] addObserver:self 
selector:@selector(repaintText:) name:WX_ICONFONT_DOWNLOAD_NOTIFICATION 
object:nil];
     }
     
     // set font
@@ -511,16 +501,8 @@ do {\
     }
     
     if (_fontFamily) {
-        NSString * keyPath = [NSString stringWithFormat:@"%@.tempSrc", 
_fontFamily];
-        NSString * fontSrc = [[[WXRuleManager sharedInstance] 
getRule:@"fontFace"] valueForKeyPath:keyPath];
-        keyPath = [NSString stringWithFormat:@"%@.localSrc", _fontFamily];
-        NSString * fontLocalSrc = [[[WXRuleManager sharedInstance] 
getRule:@"fontFace"] valueForKeyPath:keyPath];
-        //custom localSrc is cached
-        if (!fontLocalSrc && fontSrc) {
-            // if use custom font, when the custom font download finish, 
refresh text.
-            _needsRemoveObserver = YES;
-            [[NSNotificationCenter defaultCenter] addObserver:self 
selector:@selector(repaintText:) name:WX_ICONFONT_DOWNLOAD_NOTIFICATION 
object:nil];
-        }
+        // notification received when custom icon font file download finish
+        [[NSNotificationCenter defaultCenter] addObserver:self 
selector:@selector(repaintText:) name:WX_ICONFONT_DOWNLOAD_NOTIFICATION 
object:nil];
     }
     
     // set font

Reply via email to