手机处于横向模式时隐藏标签

时间:2016-02-26 01:34:47

标签: ios iphone swift

我正在创建一个iPhone应用程序,其下方带有文本标签的图标。我希望在手机旋转到横向模式时隐藏标签,因为没有足够的空间。最简单的方法是什么?

3 个答案:

答案 0 :(得分:1)

您可以先在viewDidLoad中添加NSNotification以了解设备的方向更改。

NSNotificationCenter.defaultCenter().addObserver(self, selector: "rotated", name: UIDeviceOrientationDidChangeNotification, object: nil)

这将调用函数"旋转"当设备知道它的方向发生变化时,你只需创建该功能并将你的代码放入其中。

func rotated()
{
    if(UIDeviceOrientationIsLandscape(UIDevice.currentDevice().orientation))
    {            
        print("landscape")
        label.hidden = true
    }

    if(UIDeviceOrientationIsPortrait(UIDevice.currentDevice().orientation))
    {
        print("Portrait")
        label.hidden = false
    }

}

解决方案来自"IOS8 Swift: How to detect orientation change?"

答案 1 :(得分:1)

如果您想要对更改进行动画处理(例如淡出标签或其他动画),您可以通过覆盖DWORD WINAPI timerThreadProc(DWORD dwMilliseconds) { while (!bExit) { if (std::this_thread::get_id() == hTimer1Thread.get_id()) { // do what ever Beep(10000, 100); } if (std::this_thread::get_id() == hTimer2Thread.get_id()) { // do what ever Beep(1000, 100); } Sleep(dwMilliseconds); } return 1; } 方法实际与旋转同步,例如。

#define TIMER1 1
#define TIMER2 2
DWORD WINAPI timerThreadProc(UINT ID, DWORD dwMilliseconds)
{
    while (!bExit)
    {
        if (ID == TIMER1)
        {
            // do what ever
            Beep(10000, 100);
        }

        if (ID == TIMER2)
        {
            // do what ever
            Beep(1000, 100);
        }

        Sleep(dwMilliseconds);
    }
    return 1;
}

以上代码示例取自以下答案:https://stackoverflow.com/a/28958796/994976

答案 2 :(得分:0)

目标C版

- (void)willAnimateRotationToInterfaceOrientation:(UIInterfaceOrientation)orientation  duration:(NSTimeInterval)duration
{
    if (UIInterfaceOrientationIsPortrait(orientation))
    {
        // Show the label here...
    }
    else
    {
       // Hide the label here...
    }
}

Swift版本

override func willAnimateRotationToInterfaceOrientation(toInterfaceOrientation: UIInterfaceOrientation, duration: NSTimeInterval) 
{
    if (UIInterfaceOrientationIsPortrait(toInterfaceOrientation))
    {
        // Show the label here...
    }
    else
    {
        // Hide the label here...
    }
}