使用objective-c以编程方式将iOS应用程序颠倒过来

时间:2017-06-01 11:11:57

标签: ios objective-c uiinterfaceorientation portrait

我想使用ViewController中的以下代码将我的应用程序颠倒纵向旋转:

class Image
{
private:
    int numRows_, numCols_;
    unsigned char* data_;
public:
    Image() : numRows_(0), numCols_(0), data_(new unsigned char[0])
    {}
    void setData(int r, int c, unsigned char* data)
    {
        this->numRows_ = r;
        this->numCols_ = c;
        this->data_ = new unsigned char[r*c];
        for (int i = 0; i < r*c; i++)
        {
            this->data_[i] = data[i];
        }
    }
    int rows();
    int cols();
    unsigned char* data();
    ~Image();
};

在AppDelegate中:

- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation
{    //return NO;
  // Return YES for supported orientations
  return (interfaceOrientation == UIInterfaceOrientationMaskPortraitUpsideDown);
}


- (UIInterfaceOrientationMask) supportedInterfaceOrientations

{
  return [super supportedInterfaceOrientations] | UIInterfaceOrientationMaskPortraitUpsideDown | UIInterfaceOrientationMaskPortrait;
}

当用户按下按钮时

- (UIInterfaceOrientationMask) application:(UIApplication *)application supportedInterfaceOrientationsForWindow:(UIWindow *)window

{
  return UIInterfaceOrientationMaskPortraitUpsideDown | UIInterfaceOrientationMaskPortrait;
}

该应用确实不会旋转,我不知道为什么。 有人可以暗示一下吗? 谢谢 我在info.plist中添加了方向,并在部署信息部分的常规设置中设置了复选框。

2 个答案:

答案 0 :(得分:2)

我是否理解正确,您想以编程方式想要旋转用户界面,独立于设备的物理方向?

这不是它的工作原理:当检测到设备的(物理)旋转时,iOS调用委托方法(shouldAutorotate ......等),例如,用户将其颠倒过来。在委托方法中,如果需要,您可以将视图采用到新方向。

在模拟器中,您可以通过Alt + Left / Alt + Right键模拟设备旋转。

答案 1 :(得分:1)

您无法以编程方式旋转方向,这取决于设备的传感器。但是,您可以旋转视图层。

self.view.layer.transform = CGAffineTransformMakeRotation(M_PI_2);