2013-03-20 39 views
2

我無法更改UISegmentedControl的位置。如果我這樣做:iOS UISegmentedControl無法以編程方式位置

segControl2.frame = CGRectMake(segControl1.origin.x, segControl2.origin.y, segControl2.size.width, segControl2.size.height); 

沒有什麼真正的變化,每個人都說改變控制框應該使它,但它確實沒有。

+0

檢查答案與這個問題中的高票。答案包含通過代碼將視頻添加到視圖的好方法。 http://stackoverflow.com/questions/6688160/how-to-programmatically-add-a-uisegmentedcontrol-to-a-container-view – 2013-03-20 23:17:50

+0

你添加了子視圖? – NULL 2013-03-20 23:22:24

+0

可能還有其他影響您分段控件放置的其他內容。請分享更多的代碼。 – Aaron 2014-02-19 18:04:45

回答

1
CGRect frame = [[UIScreen mainScreen] bounds]; 
UISegmentedControl *segControl = [[UISegmentedControl] initWithItems:[NSArray alloc] initWithObjects:@"One", @"Two", @"Three", nil]; 
segControl.frame = CGRectMake(frame.origin.x + 50, frame.origin.y + 50, segControl.size.width, segControl.size.height); 
[view addSubview:segControl]; 

應該工作得很好。

+0

如果我已經在nib中創建了控件,那麼我不會在代碼中創建它。爲什麼改變框架將不會做的伎倆呢? – user1405583 2013-03-21 19:10:53

0

對於你已經爲子視圖添加後更改任何元素的位置,你可以使用以下命令:

CGRect frame = segControl2.frame; 
frame.origin.x = segControl1.frame.origin.x; 
// for changes to other properties, do likewise. if no changes, don't do anything 
frame.origin.y = ... 

segControl2.frame = frame; 
+0

這對我不起作用。調試時,我一行一行,所以我可以清楚地看到frame.origina.x真的改變了,我把x設置爲一個更小的值,將控件移到右邊,但沒有任何反應,控件不移動。我有在nib中創建的控件,並且我正在執行viewDidLoad方法中的代碼。 – user1405583 2013-03-21 20:16:31

+0

這很奇怪。我已經使用這種方法來定位幾乎所有在故事板或編程創建的元素。也許你的問題不在於代碼,而是在IB中設置的參數,或者你在哪裏放置UISegmentedControl。 – Rick 2013-03-22 07:14:49

+0

我可以使用控件的非常相同的屬性來更改UISegmentedControlStyle,所以我想它是正確的。 – user1405583 2013-03-22 08:12:27

0

這可能是「自動佈局」,你可以嘗試創建自己的UISegmentedControl編程方式而不是。

相關問題