我無法更改UISegmentedControl的位置。如果我這樣做:iOS UISegmentedControl無法以編程方式位置
segControl2.frame = CGRectMake(segControl1.origin.x, segControl2.origin.y, segControl2.size.width, segControl2.size.height);
沒有什麼真正的變化,每個人都說改變控制框應該使它,但它確實沒有。
我無法更改UISegmentedControl的位置。如果我這樣做:iOS UISegmentedControl無法以編程方式位置
segControl2.frame = CGRectMake(segControl1.origin.x, segControl2.origin.y, segControl2.size.width, segControl2.size.height);
沒有什麼真正的變化,每個人都說改變控制框應該使它,但它確實沒有。
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];
應該工作得很好。
如果我已經在nib中創建了控件,那麼我不會在代碼中創建它。爲什麼改變框架將不會做的伎倆呢? – user1405583 2013-03-21 19:10:53
對於你已經爲子視圖添加後更改任何元素的位置,你可以使用以下命令:
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;
這對我不起作用。調試時,我一行一行,所以我可以清楚地看到frame.origina.x真的改變了,我把x設置爲一個更小的值,將控件移到右邊,但沒有任何反應,控件不移動。我有在nib中創建的控件,並且我正在執行viewDidLoad方法中的代碼。 – user1405583 2013-03-21 20:16:31
這很奇怪。我已經使用這種方法來定位幾乎所有在故事板或編程創建的元素。也許你的問題不在於代碼,而是在IB中設置的參數,或者你在哪裏放置UISegmentedControl。 – Rick 2013-03-22 07:14:49
我可以使用控件的非常相同的屬性來更改UISegmentedControlStyle,所以我想它是正確的。 – user1405583 2013-03-22 08:12:27
這可能是「自動佈局」,你可以嘗試創建自己的UISegmentedControl編程方式而不是。
檢查答案與這個問題中的高票。答案包含通過代碼將視頻添加到視圖的好方法。 http://stackoverflow.com/questions/6688160/how-to-programmatically-add-a-uisegmentedcontrol-to-a-container-view – 2013-03-20 23:17:50
你添加了子視圖? – NULL 2013-03-20 23:22:24
可能還有其他影響您分段控件放置的其他內容。請分享更多的代碼。 – Aaron 2014-02-19 18:04:45