我需要在使用自動佈局的Viewcontroller中更改標籤的位置。之前,要做到這一點我用如何禁用單個UI元素的自動佈局(UIlabel)
[arriveTimeLabel setTranslatesAutoresizingMaskIntoConstraints:YES];
[departTimeLabel setTranslatesAutoresizingMaskIntoConstraints:YES];
但產生一些運行時警告
Break on objc_exception_throw to catch this in the debugger.
The methods in the UIConstraintBasedLayoutDebugging category on UIView listed in <UIKit/UIView.h> may also be helpful.
2013-08-15 23:25:58.791 Vicinitime[78327:c07] Unable to simultaneously satisfy constraints.
Probably at least one of the constraints in the following list is one you don't want. Try this: (1) look at each constraint and try to figure out which you don't expect; (2) find the code that added the unwanted constraint or constraints and fix it. (Note: If you're seeing NSAutoresizingMaskLayoutConstraints that you don't understand, refer to the documentation for the UIView property translatesAutoresizingMaskIntoConstraints)
(
"<NSLayoutConstraint:0x9173a20 UIScrollView:0x9580190.bottom == UIView:0x9173890.bottom>",
"<NSLayoutConstraint:0x9171fe0 V:|-(138)-[UILabel:0x958cf70] (Names: '|':UIScrollView:0x9580190)>",
"<NSLayoutConstraint:0x91739a0 V:|-(0)-[UIScrollView:0x9580190] (Names: '|':UIView:0x9173890)>",
"<NSAutoresizingMaskLayoutConstraint:0xab6ec90 h=--& v=&-& UILabel:0x958cf70.midY == -6.3989*UIScrollView:0x9580190.height>",
"<NSAutoresizingMaskLayoutConstraint:0xab6eef0 h=--& v=&-& V:[UILabel:0x958cf70(25)]>",
"<NSAutoresizingMaskLayoutConstraint:0xab6dbd0 h=--& v=--& V:[UIView:0x9173890(455)]>"
)
Will attempt to recover by breaking constraint
<NSLayoutConstraint:0x9171fe0 V:|-(138)-[UILabel:0x958cf70] (Names: '|':UIScrollView:0x9580190)>
所以我環顧四周,看到了解決這個問題我必須設置 [arriveTimeLabel setTranslatesAutoresizingMaskIntoConstraints:NO]; [departTimeLabel setTranslatesAutoresizingMaskIntoConstraints:NO];
to no。問題是,現在標籤沒有以編程方式改變位置。
如果你需要的代碼編程設置標籤:
if(travelTimeInt <= activityTimeInt){
[timeBreakdownButtonImage setBackgroundImage:[UIImage imageNamed:@"timeBreakdownBackground7.png"] forState:UIControlStateNormal];
NSLog(@"got to setting label place");
[self.arriveTimeLabel setFrame:CGRectMake(67, 170, 41, 25)];
[self.departTimeLabel setFrame:CGRectMake(211, 170, 41, 25)];
}
if(travelTimeInt * 7 >= activityTimeInt){
[timeBreakdownButtonImage setBackgroundImage:[UIImage imageNamed:@"timeBreakdownBackground6.png"] forState:UIControlStateNormal];
NSLog(@"got to setting label place");
self.arriveTimeLabel.frame = CGRectMake(71, 170, 41, 25);
self.departTimeLabel.frame = CGRectMake(207, 170, 41, 25);
}
那麼,有沒有辦法改變的UILabel的位置自動版式上?也許禁用自動佈局?
截至目前,無法爲每個組件單獨禁用自動佈局選項。 –
關於整個viewcontroller禁用? – Spenciefy
是的,您可以禁用整個ViewController。選擇與您的ViewController關聯的筆尖 - >轉到文件檢查器 - >取消選中Interface Builder文檔部分中的「使用Autolayout」。 –