How do I change UIView Size?

前端 未结 8 1953
抹茶落季
抹茶落季 2020-12-07 23:48

I have trouble with modifying my UIView height at launch.

I have to UIView and I want one to be screen size * 70 and the other to fill the gap.

here is what

相关标签:
8条回答
  • 2020-12-08 00:23

    This can be achieved in various methods in Swift 3.0 Worked on Latest version MAY- 2019

    Directly assign the Height & Width values for a view:

    userView.frame.size.height = 0
    
    userView.frame.size.width = 10
    

    Assign the CGRect for the Frame

    userView.frame =  CGRect(x:0, y: 0, width:0, height:0)
    

    Method Details:

    CGRect(x: point of X, y: point of Y, width: Width of View, height: Height of View)

    Using an Extension method for CGRECT

    Add following extension code in any swift file,

    extension CGRect {
    
        init(_ x:CGFloat, _ y:CGFloat, _ w:CGFloat, _ h:CGFloat) {
    
            self.init(x:x, y:y, width:w, height:h)
        }
    }
    

    Use the following code anywhere in your application for the view to set the size parameters

    userView.frame =  CGRect(1, 1, 20, 45)
    
    0 讨论(0)
  • 2020-12-08 00:24

    Here you go. this should work.

    questionFrame.frame = CGRectMake(0 , 0, self.view.frame.width, self.view.frame.height * 0.7) 
    
    answerFrame.frame =  CGRectMake(0 , self.view.frame.height * 0.7, self.view.frame.width, self.view.frame.height * 0.3)
    
    0 讨论(0)
  • 2020-12-08 00:25

    For a progress bar kind of thing, in Swift 4

    I follow these steps:

    1. I create a UIView outlet : @IBOutlet var progressBar: UIView!
    2. Then a property to increase its width value after a user action var progressBarWidth: Int = your value
    3. Then for the increase/decrease of the progress progressBar.frame.size.width = CGFloat(progressBarWidth)
    4. And finally in the IBACtion method I add progressBarWidth += your value for auto increase the width every time user touches a button.
    0 讨论(0)
  • 2020-12-08 00:36

    You can do this in Interface Builder:

    1) Control-drag from a frame view (e.g. questionFrame) to main View, in the pop-up select "Equal heights".

    2)Then go to size inspector of the frame, click edit "Equal height to Superview" constraint, set the multiplier to 0.7 and hit return.

    You'll see that constraint has changed from "Equal height to..." to "Proportional height to...".

    0 讨论(0)
  • 2020-12-08 00:36

    Assigning questionFrame.frame.size.height= screenSize.height * 0.30 will not reflect anything in the view. because it is a get-only property. If you want to change the frame of questionFrame you can use the below code.

    questionFrame.frame = CGRect(x: 0, y: 0, width: 0, height: screenSize.height * 0.70)
    
    0 讨论(0)
  • 2020-12-08 00:41

    I know that there is already a solution to this question, but I found an alternative to this issue and maybe it could help someone.

    I was having trouble with setting the frame of my sub view because certain values were referring to its position within the main view. So if you don't want to update your frame by changing the whole frame via CGRect, you can simply change a value of the frame and then update it.

    // keep reference to you frames
    var questionView = questionFrame.frame
    var answerView = answerFrame.frame
    
    // update the values of the copy        
    questionView.size.height = CGFloat(screenSize.height * 0.70)
    answerView.size.height = CGFloat(screenSize.height * 0.30)
    
    // set the frames to the new frames
    questionFrame.frame = questionView
    answerFrame.frame = answerView
    
    0 讨论(0)
提交回复
热议问题