Jak zmienić rozmiar UIView?

Mam problem z modyfikacją wysokości UIView przy starcie.

Muszę UIView i chcę, aby jeden był rozmiar ekranu * 70, a drugi, aby wypełnić lukę.

Oto co mam

 @IBOutlet weak var questionFrame: UIView!
 @IBOutlet weak var answerFrame: UIView!
 let screenSize:CGRect = UIScreen.mainScreen().bounds

I

 questionFrame.frame.size.height = screenSize.height * 0.70
 answerFrame.frame.size.height = screenSize.height * 0.30

Nie ma wpływu na aplikację w czasie działania. Używam autolayout, ale mam tylko ograniczenia marginesów...

Czy robię to źle?
Author: Dan Beaulieu, 2014-11-03

5 answers

Proszę. to powinno zadziałać.

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)
 43
Author: User4,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-11-03 23:07:15

Można to osiągnąć różnymi metodami w Swift 3.0 pracował nad najnowszą wersją Sierpień - 2017

Bezpośrednie przypisanie wartości wysokości i szerokości dla widoku:

userView.frame.size.height = 0

userView.frame.size.width = 10

Przypisz CGRect do ramki

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

Szczegóły Metody:

CGRect(x: punkt X, y: punkt Y, width: Szerokość widoku, height: Wysokość widoku)

Korzystanie z metody rozszerzenia dla CGRECT

Dodaj po kodzie rozszerzenia w dowolnym pliku swift,

extension CGRect {

    init(_ x:CGFloat, _ y:CGFloat, _ w:CGFloat, _ h:CGFloat) {

        self.init(x:x, y:y, width:w, height:h)
    }
}

Użyj poniższego kodu w dowolnym miejscu w aplikacji dla widoku, aby ustawić parametry rozmiaru

userView.frame =  CGRect(1, 1, 20, 45)
 32
Author: BHUVANESH MOHANKUMAR,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-08-22 13:57:35

Swift 3 i Swift 4:

myView.frame = CGRect(x: 0, y: 0, width: 0, height: 0)
 21
Author: RaziPour1993,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-12-05 07:33:25

Hi create this extends if you want. Aktualizacja 2015 Swift 2.0

Utwórz Plik Extends.Swift i dodaj ten kod (dodaj Importuj fundament gdzie chcesz zmienić wysokość)

/**
Get Set x Position

- parameter x: CGFloat
by DaRk-_-D0G
*/
var x:CGFloat {
    get {
        return self.frame.origin.x
    }
    set {
        self.frame.origin.x = newValue
    }
}
/**
Get Set y Position

- parameter y: CGFloat
by DaRk-_-D0G
*/
var y:CGFloat {
    get {
        return self.frame.origin.y
    }
    set {
        self.frame.origin.y = newValue
    }
}
/**
Get Set Height

- parameter height: CGFloat
by DaRk-_-D0G
*/
var height:CGFloat {
    get {
        return self.frame.size.height
    }
    set {
        self.frame.size.height = newValue
    }
}
/**
Get Set Width

- parameter width: CGFloat
by DaRk-_-D0G
*/
var width:CGFloat {
    get {
        return self.frame.size.width
    }
    set {
        self.frame.size.width = newValue
    }
}

For Use (inherits of UIView)

inheritsOfUIView.height = 100
button.height = 100
print(view.height)
 18
Author: YannickSteph,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-07-02 08:48:01

Możesz to zrobić w Interface Builder:

1) Control-przeciągnij z widoku ramki (np. questionFrame) do widoku głównego, w wyskakującym okienku wybierz "równe wysokości".

2) Następnie przejdź do inspektora rozmiaru ramki, kliknij Edytuj ograniczenie "Equal height to Superview", Ustaw mnożnik na 0.7 i naciśnij return.

Zobaczysz, że ograniczenie zmieniło się z " równej wysokości na..."do" Wysokość proporcjonalna do...".

 1
Author: Denys Triasunov,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-11-01 10:52:14