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