2014-09-26 60 views
1

XCODE 6.0.1,IOS 8,自定義UILabel,方法:LayoutSubviewsiOS 8自定義標籤LayoutSubviews方法永遠不會被調用?

我有自定義的UILabel,它可以在iOS6和iOS7上正常工作。但在iOS 8上,該標籤的- (void)layoutSubviews方法永遠不會被調用。在這裏我想補充一點,標籤是我的故事板場景的一部分,它是在以前的Xcode版本中創建的。

iOS 8中的autoLayout系統會發生什麼情況?是否有任何與視圖佈局有關的重大變化?

任何幫助表示讚賞。

謝謝。

+0

似乎問題已在iOS 8.1 beta版本中修復。 – ABC1 2014-09-30 02:45:41

回答

0

檢查這個問題的答案:Xcode6, iOS8 and (void)layoutSubviews

真的layoutSubviews不叫了對的UILabel iOS8上,蘋果不希望任何人使用它作爲上海華。

我正在使用ReactiveCocoaLayout,因此可以通過訂閱rcl_frameSignal或rcl_boundsSignal來完成。

-(void)awakeFromNib { [ self.rcl_boundsSignal subscribeNext: ^(NSValue* boundsValue) { //layout changed } ]; } 
Or you can use simple KVO to know when frame has been changed: 
-(void)dealloc 
{ 
    [ self removeObserver: self forKeyPath: @"layer.bounds" ]; 
} 

-(void)observeValueForKeyPath:(NSString*)keyPath 
        ofObject:(id)object 
         change:(NSDictionary*)change 
         context:(void*)context 
{ 
    if ([ keyPath isEqualToString: @"layer.bounds" ]) 
    { 
     //layoutSubviews 
    } 
    else 
    { 
     [ super observeValueForKeyPath: keyPath 
         ofObject: object 
         change: change 
         context: context ]; 
    } 
} 

-(void)awakeFromNib 
{ 
    [ self addObserver: self 
      forKeyPath: @"layer.bounds" 
       options: NSKeyValueObservingOptionNew 
       context: 0 ]; 
} 
相關問題