2016-07-05 55 views
0

我有一個按鈕從相機拍攝圖像的視圖。當我按下捕捉按鈕時,它會重定向到另一個視圖控制器。一旦我拍照,視圖就會彈出到前一個視圖控制器。當彈出視圖時,我還會向拍攝圖像發送第一個視圖控制器的通知。當圖像被接收時,我試圖改變視圖setFrame方法的框架。但框架沒有得到更新。我試過了,如何從NSNotificationCenter收到通知時更改框架矩形?

- (void) onReceiveImage:(NSNotification *) notification{ 
    if ([[notification name] isEqualToString:@"ImageCapturedNotification"]) { 
     [self.postTxtView resignFirstResponder]; 
     NSDictionary* userInfo = notification.userInfo; 
     UIImage *image = (UIImage*)userInfo[@"image"]; 
     [self.postLandImageView setImage:image]; 
     // in here i want to change the view frame 
    } 
} 

要改變我做的框架,

self.bottomView.frame = CGRectMake([UIScreen mainScreen].bounds.size.width-self.bottomView.frame.size.width, self.view.bounds.size.height-self.bottomView.frame.size.height, self.bottomView.frame.size.width, self.bottomView.frame.size.height); 

這是行不通的。請幫助我完成這件事。謝謝。

+1

你用故事板/筆尖和約束? – Paulw11

+0

是的。自動佈局和尺寸類別 – codebot

+0

然後,您需要操縱約束條件,而不是框架。你可以創建一個IBOutlet引用到視圖的頂部約束,然後修改它的'常量'屬性。你甚至可以動畫這個變化 – Paulw11

回答

0

請檢查您是否在主線程上執行您的代碼。

大多數情況下,只能從您應用的主線程使用UIKit類。對於從UIResponder派生的類或者以任何方式涉及操縱應用程序用戶界面的類尤其如此。

dispatch_async(dispatch_get_main_queue(), ^{ 
     // Do any setup on main queue 
    }); 

如果您excuting您的主線程代碼,可以提供樣品演示?

+0

這工作。應在主隊列中調用「resignFirstResponder」。謝謝。 – codebot

相關問題