我想要創建一個垂直UISlider
,並將其準確地放入現有容器視圖中,該視圖的大小和位置使用autoLayout
與.xib
文件。但是我根本無法實現它的功能,而且我的手指已經Google了。將垂直UISlider放入現有容器視圖中?
我得到的距離最近會創建一個太長的滑塊並延伸到屏幕外。
我把代碼放在錯誤的地方?
我把我的代碼在"layOutSubviews"
感興趣的幾個問題:
1.Per蘋果的文檔,視圖的「幀」是不是改造後有效,不應該設置。
2.滑塊的框架設置爲未來父代的尺寸之前的轉換(x和y交換)。
3.轉換後的視圖看起來在轉換前座標系中保持其邊界。即在90度變換之後,變換的視圖邊界的寬度和高度似乎被交換。
此代碼不起作用。除了延伸到屏幕底部之外,滑塊看起來是正確的。滑塊邊界甚至框架(蘋果認爲無效)似乎與容器視圖的界限和框架相匹配。滑塊甚至不會保持在它自己的範圍內。
[super layoutSubviews];
CGRect trigLevelSliderFrame=self.trigLevelSliderContainer.bounds;
trigLevelSliderFrame.size.height=self.trigLevelSliderContainer.bounds.size.width;
trigLevelSliderFrame.size.width=self.trigLevelSliderContainer.bounds.size.height;
UISlider *mySlider=[[UISlider alloc] initWithFrame:trigLevelSliderFrame];
self.trigSlider=mySlider;
[mySlider release];
self.trigSlider.transform=CGAffineTransformMakeRotation(-M_PI_2);
CGPoint center=CGPointMake(self.trigLevelSliderContainer.bounds.size.width/2,self.trigLevelSliderContainer.bounds.size.height/2);
self.trigSlider.center=center;
[self.trigLevelSliderContainer addSubview:self.trigSlider];
我不明白這個問題的解決方案,但你的回答給了我希望找到我自己的解決方案。如果你可以添加一些相關的代碼給你的答案,那就太酷了!對我來說,這絕對是一個「時間」問題......我只是將有問題的代碼切換到一個「viewDidAppear」函數,後者隨後加載並正確顯示不同的屏幕尺寸。 – PlateReverb
我很高興我幫助過某人。我對此的記憶是模糊的;但是,正如我記得,我把滑塊放入一個包含視圖的大小和形狀的最終滑塊。我這樣做,所以我可以使用自動佈局。然後我編程地將滑塊放到容器視圖中,然後將其轉換爲與容器視圖的尺寸相匹配。我的錯誤是將容器視圖添加到容器視圖並將其旋轉到錯誤的位置 - 在容器視圖佈置之前。我會盡量編輯我的答案,以便更清楚。 – PaulB
你如何知道佈局的容器視圖和你的代碼之間的順序來旋轉滑塊?自動佈局/ IB的東西和'viewDidLoad'函數的順序對我來說仍然是個謎(在我的問題出現之前,我假設IB /自動佈局總是會先發生。這裏是我的具體問題(和「哈克」解決方案),如果你有興趣的鏈接:http://stackoverflow.com/questions/41734256/uislider-handle-changes-width-on-different-size-ipads – PlateReverb