iOS 8横向纵向模式下的自定义键盘

iOS 8横向纵向模式下的自定义键盘,ios,ios8,landscape-portrait,ios-app-extension,custom-keyboard,Ios,Ios8,Landscape Portrait,Ios App Extension,Custom Keyboard,我想在iOS 8中制作一个自定义键盘。我想改变它的大小时,手机旋转到横向模式 -(void)willRotateToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation duration:(NSTimeInterval)duration { NSUserDefaults *def = [NSUserDefaults standardUserDefaults]; if ((toInterfaceOr

我想在iOS 8中制作一个自定义键盘。我想改变它的大小时,手机旋转到横向模式

-(void)willRotateToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation 
duration:(NSTimeInterval)duration
{
    NSUserDefaults *def = [NSUserDefaults standardUserDefaults];
    if ((toInterfaceOrientation==UIInterfaceOrientationPortrait) || (toInterfaceOrientation==UIInterfaceOrientationPortrait))
    {
        [def setObject:@"No" forKey:@"LandScape"];
        [def synchronize];
        islandscapemode = NO;
        NSLayoutConstraint *_heightConstraint =
        [NSLayoutConstraint constraintWithItem: self.view
                                     attribute: NSLayoutAttributeHeight
                                     relatedBy: NSLayoutRelationEqual
                                        toItem: nil
                                     attribute: NSLayoutAttributeNotAnAttribute
                                    multiplier: 0.0
                                      constant: 266];

        [self.view addConstraint:_heightConstraint];
           }
    else
    {
        [def setObject:@"Yes" forKey:@"LandScape"];
        [def synchronize];

        NSLayoutConstraint *_heightConstraint =
        [NSLayoutConstraint constraintWithItem: self.view
                                     attribute: NSLayoutAttributeHeight
                                     relatedBy: NSLayoutRelationEqual
                                        toItem: nil
                                     attribute: NSLayoutAttributeNotAnAttribute
                                    multiplier: 0.0
                                      constant: 266];

        [self.view addConstraint:_heightConstraint];

        self.view.backgroundColor=[UIColor greenColor];

        islandscapemode = YES;

    }
    //  [self determineKeyboardNib:toInterfaceOrientation];
}
但它不起作用。我该怎么办

willRotateToInterfaceOrientation:duration:
在iOS 8中被弃用。相反,尝试使用

viewWillTransitionToSize:withTransitionCoordinator:

此函数提供对容器视图和转换协调器的新大小的引用。然后可以将键盘调整为新的屏幕大小

还有一个附加到过渡协调器的功能,允许您在屏幕旋转时设置视图动画和/或在屏幕旋转后设置完成块



至于您最初的问题,您是否尝试在设置约束后在视图上调用layoutIfNeeded?

当视图变为横向模式时,我应该做什么来减小视图的大小?什么是“它不工作”?键盘的大小保持不变?你收到错误信息了吗?设备在您手中爆炸,您用一只好的手键入了这个问题?您应该在-[viewDidLoad]中,将约束添加到视图中,只需更改约束常量值,而不是添加一个会导致约束错误的新约束。在约束代码中,应该设置超级视图以关闭自动调整大小
animateAlongsideTransition:completion:
animateAlongsideTransitionInView:animation:completion: