2016-07-05 63 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