2016-07-05 2 views
0

У меня есть кнопка с изображением с камеры. Когда я нажимаю кнопку захвата, он перенаправляется на другой контроллер представления. После того, как я сделаю снимок, вид появится на предыдущем контроллере. При появлении представления я также отправляю уведомление о первом контроллере представления с принятым изображением. Когда изображение принимается, я попытался изменить режим просмотра setFrame. Но кадр не получил обновления. То, что я попытался было,Как изменить frame rect при получении уведомления от 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

Используете ли вы раскадровку/nib & ограничения? – Paulw11

+0

есть. Автоматические макеты и классы размеров – codebot

+0

Затем вам нужно управлять ограничениями, а не фреймом. Вы можете создать ссылку IBOutlet на верхнее ограничение вида, а затем изменить его свойство 'constant'. Вы можете даже оживить это изменение. – Paulw11

ответ

0

Проверьте, действительно ли вы выполняете код в основной теме.

По большей части используйте классы UIKit только из основного потока приложения. Это особенно справедливо для классов, полученных из UIResponder, или для управления пользовательским интерфейсом вашего приложения.

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

Если вы excuting код на главном потоке, вы можете предоставить образец демо?

+0

Это сработало. 'resignFirstResponder' должен вызываться в основной очереди. Спасибо. – codebot

Смежные вопросы