[英]XCode 4 UILabel hidden doesn't seem to work
我在操作UILabel時遇到了一些顯示問題,即使我使用了
myLabel.hidden=YES; ...manipulation code... myLabel.hidden=NO;
標簽從不“隱藏”,並且顯示了操作(CATransform3DMakeRotation)(您可以看到標簽翻轉)。
在XCode中,我在“ myLabel.hidden = YES;”處設置了一個斷點。 行,但是當我逐步執行代碼時,它不會隱藏。
我必須缺少一些東西才能實現“隱藏”方法,對嗎? 某種刷新或更新標簽? 謝謝...
這是代碼。 從多個地方調用“ SetStartPosition”,而不僅僅是“ doubleTap”。
-(void)doubleTap{
//stop the timer
[myMover invalidate]; //the timer simply moves the label position
myMover = nil;
msgLabel.hidden=YES;
isMirrored=!isMirrored;
[self setStartPosition]; //flips the label
msgLabel.hidden=NO;
//restart the timer
[self runMover];
}
- (void)setStartPosition{
if(isMirrored){
startPosition=(msgLabel.frame.size.width/2) * -1;
msgLabel.layer.transform = CATransform3DMakeRotation(M_PI, 0.0f, 1.0f, 0.0f); //M_PI rotates 180 degrees
}else{
startPosition=(screenHeight)+(msgLabel.frame.size.width/2);
msgLabel.layer.transform = CATransform3DMakeRotation(0.0, 0.0f, 1.0f, 0.0f); //0.0 rotate to normal
}
newX=startPosition;
newY=screenWidth/2;
newFrame = msgLabel.frame;
newFrame.size.height = screenWidth;
newFrame.origin.x =newX;
newFrame.origin.y=newY;
msgLabel.frame = newFrame;
}
在方法執行期間不執行任何繪制,所有操作均在下一個繪制周期完成。 如果上面的代碼全部以相同的方法執行,則標簽的最終狀態將可見,因為在完成任何繪制之前,先將其隱藏然后重新顯示。
如果您將問題擴展為包括更多上下文,則提供解決方案將更加容易。
看起來好像正在獲取不需要的動畫,因為您正在修改CALayer的可動畫設置的屬性,從而為您提供了隱式動畫。 請參見此處以獲取有關如何替代隱式動畫的時間的指導-請參見“臨時禁用圖層操作”
另一種選擇是您無意中制作了動畫,因為timer方法已將待處理的更改排隊,並且您的轉換是同時完成的,因此它是在動畫中完成的。 更改變換之前,應從標簽中刪除所有動畫。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.