Подтвердить что ты не робот

Как изменить размер UIView?

У меня возникают проблемы с изменением моей высоты UIView при запуске.

У меня есть UIView, и я хочу, чтобы один размер экрана * 70 и другой, чтобы заполнить пробел.

вот что я

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

и

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

Это не влияет на приложение во время выполнения. Я использую автозапуск, но у меня только ограничения полей...

Я делаю все это неправильно?

4b9b3361

Ответ 1

Здесь вы идете. это должно работать.

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)

Ответ 2

Это может быть достигнуто различными способами в Swift 3.0. Работает в последней версии MAY- 2019.

Непосредственно назначьте значения высоты и ширины для вида:

userView.frame.size.height = 0

userView.frame.size.width = 10

Назначьте CGRect для кадра

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

Детали метода:

CGRect (x: точка X, y: точка Y, ширина: ширина обзора, высота: высота обзора)

Использование метода Extension для CGRECT

Добавьте следующий код расширения в любой файл swift,

extension CGRect {

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

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

Используйте следующий код в любом месте вашего приложения для представления, чтобы установить параметры размера

userView.frame =  CGRect(1, 1, 20, 45)

Ответ 3

Swift 3 и Swift 4:

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

Ответ 4

Привет, создайте это, если хотите. Обновление 2015 Swift 2.0

Создать файл Extends.Swift и добавить этот код (добавьте import foundation, где вы хотите изменить высоту)

/**
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
    }
}

Для использования (наследует UIView)

inheritsOfUIView.height = 100
button.height = 100
print(view.height)

Ответ 5

Это можно сделать в Interface Builder:

1) Управляющее перетаскивание из представления кадра (например, questionFrame) в основное представление, во всплывающем меню выберите "Равные высоты".

2) Затем перейдите к инспектору размеров кадра, нажмите "Ограничить высоту до Superview", установите множитель в 0.7 и нажмите "Return".

Вы увидите, что ограничение изменилось с "Равная высота на..." на "Пропорциональная высота до...".

Ответ 6

Для индикатора прогресса в Swift 4

Я следую за этими шагами:

  1. Я создаю выход UIView: @IBOutlet var progressBar: UIView!
  2. Затем свойство для увеличения значения ширины после действия пользователя var progressBarWidth: Int = your value
  3. Затем для увеличения/уменьшения прогресса progressBar.frame.size.width = CGFloat(progressBarWidth)
  4. И, наконец, в методе IBACtion я добавляю progressBarWidth += your value для автоматического увеличения ширины каждый раз, когда пользователь нажимает кнопку.

Ответ 7

Назначение questionFrame.frame.size.height= screenSize.height * 0.30 не будет отражать что-либо в представлении. потому что это свойство только для получения. Если вы хотите изменить фрейм QuestionFrame, вы можете использовать приведенный ниже код.

questionFrame.frame = CGRect(x: 0, y: 0, width: 0, height: screenSize.height * 0.70)

Ответ 8

Я знаю, что решение этого вопроса уже есть, но я нашел альтернативу этой проблеме, и, возможно, она может кому-то помочь.

У меня были проблемы с настройкой фрейма моего подвида, потому что определенные значения имели отношение к его положению в главном представлении. Поэтому, если вы не хотите обновлять свой фрейм путем изменения всего фрейма с помощью CGRect, вы можете просто изменить значение фрейма и затем обновить его.

// 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