2016-03-31 4 views
-1

Я работаю над приложением, которое будет работать только горизонтально и делать все программно.Как использовать ограничения программно?

У меня есть изображение, два текстовых поля и две кнопки, но я не знаю, как установить ограничения на эти текстовые поля и кнопки, значит, когда я использую iPhone 5, тогда это нормально, но когда я использую iPhone 6s плюс тогда он выглядит небольшим. я вывешиваю здесь код и скриншоты

UIImageView *logoImage = [[UIImageView alloc]init]; 
    logoImage.frame = CGRectMake(CGRectGetMidX(self.view.frame)-100, 10, 250, 100); 
    [logoImage setImage:[UIImage imageNamed:@"antya_logo1.png"]]; 

    [self.view addSubview:logoImage]; 

    UILabel *loginLabel = [[UILabel alloc]init]; 
    loginLabel.frame = CGRectMake(10, 0, 100, 40); 
    loginLabel.text = @"Login Form"; 
    loginLabel.textColor = [UIColor blackColor]; 
    loginLabel.font = [UIFont fontWithName:@"LaoSangamMN" size:18]; 


    CGFloat Xuser = CGRectGetMidX(self.view.frame)-120; 
    CGFloat Yuser = CGRectGetMaxY(loginLabel.frame)+80; 

    usernameField = [[UITextField alloc]init]; 
    usernameField.frame = CGRectMake(Xuser, Yuser, 300, 35); 
    usernameField.placeholder = @" User Name"; 
    usernameField.font = [UIFont fontWithName:@"LaoSangamMN" size:18]; 
    usernameField.backgroundColor = [UIColor whiteColor]; 
    usernameField.layer.cornerRadius = 7; 
    usernameField.layer.borderWidth = 0.5; 

    [self.view addSubview:usernameField]; 

    UIImageView *userImgV = [[UIImageView alloc]init]; 
    userImgV.frame = CGRectMake(CGRectGetMinX(usernameField.frame)-35, CGRectGetMinY(usernameField.frame)+5, 25, 25); 
    [userImgV setImage:[UIImage imageNamed:@"user-icon.png"]]; 

    [self.view addSubview:userImgV]; 

    CGFloat Ypass = CGRectGetMaxY(usernameField.frame)+20; 

    passwordField = [[UITextField alloc]init]; 
    passwordField.frame = CGRectMake(Xuser, Ypass, 300, 35); 
    passwordField.placeholder = @" Password"; 
    passwordField.secureTextEntry = YES; 
    passwordField.font = [UIFont fontWithName:@"LaoSangamMN" size:18]; 
    passwordField.backgroundColor = [UIColor whiteColor]; 
    passwordField.layer.cornerRadius = 7; 
    passwordField.layer.borderWidth = 0.5; 


    [self.view addSubview:passwordField]; 

это в звоню 6с плюс enter image description here

и это в я phone5s

enter image description here

Пожалуйста, помогите мне, спасибо аванс

+1

Вы установили какие-либо ограничения ??? если не первый, попробуйте что-то ... –

+0

Вам нужно переключить свой код с помощью определенных размеров на использование ограничений. Посмотрите на анкеры, они самые простые в использовании. Затем, когда вы застряли, вернитесь и задайте более конкретные вопросы. Наконец, делать все программно - это хороший способ узнать, как все работает. Но использование xib или доски объявлений сэкономит вам много кода и усилий. Особенно учитывая, насколько прост этот макет. – drekka

+0

Нет, я не использовал никаких ограничений, я не знаю, как использовать программный подход, поэтому я прошу здесь, я делаю это приложение только горизонтально –

ответ

1

Примечание: Когда вы имеете дело с рамкой установки автозапуска, вид не будет работать. Вам нужно установить ограничения для того, чтобы это представление выглядело правильно на всех устройствах iPhone.

UIImageView *logoImage = [[UIImageView alloc] init]; 
[logoImage setImage:[UIImage imageNamed:@"antya_logo1.png"]]; 
logoImage.translatesAutoresizingMaskIntoConstraints = false; 

[self.view addSubview:logoImage]; 

UILabel *loginLabel = [[UILabel alloc]init]; 
loginLabel.text = @"Login Form"; 
loginLabel.textColor = [UIColor blackColor]; 
loginLabel.font = [UIFont fontWithName:@"LaoSangamMN" size:18]; 
loginLabel.translatesAutoresizingMaskIntoConstraints = false; 

[self.view addSubview:loginLabel]; 

UITextField *usernameField = [[UITextField alloc]init]; 
usernameField.placeholder = @" User Name"; 
usernameField.font = [UIFont fontWithName:@"LaoSangamMN" size:18]; 
usernameField.backgroundColor = [UIColor whiteColor]; 
usernameField.layer.cornerRadius = 7; 
usernameField.layer.borderWidth = 0.5; 
usernameField.translatesAutoresizingMaskIntoConstraints = false; 

UIImageView *userImgV = [[UIImageView alloc]init]; 
[userImgV setImage:[UIImage imageNamed:@"user-icon.png"]]; 

//set left view of textfield 
usernameField.leftView = userImgV; 
usernameField.leftViewMode = UITextFieldViewModeAlways; 
[self.view addSubview:usernameField]; 


UITextField *passwordField = [[UITextField alloc]init]; 
passwordField.placeholder = @" Password"; 
passwordField.secureTextEntry = YES; 
passwordField.font = [UIFont fontWithName:@"LaoSangamMN" size:18]; 
passwordField.backgroundColor = [UIColor whiteColor]; 
passwordField.layer.cornerRadius = 7; 
passwordField.layer.borderWidth = 0.5; 
passwordField.translatesAutoresizingMaskIntoConstraints = false; 

//set left view of textfield 

UIImageView *passwordImgV = [[UIImageView alloc]init]; 
[passwordImgV setImage:[UIImage imageNamed:@"password-icon.png"]]; 

passwordField.leftView = passwordImgV; 
passwordField.leftViewMode = UITextFieldViewModeAlways; 
[self.view addSubview:passwordField]; 


UIButton *buttonSignUp = [UIButton buttonWithType:UIButtonTypeCustom]; 
[buttonSignUp setTag:101]; 
[buttonSignUp setTitle:@"SIGNUP" forState:UIControlStateNormal]; 
[buttonSignUp addTarget:self action:@selector(<your selector>) forControlEvents:UIControlEventTouchUpInside]; 
buttonSignUp.translatesAutoresizingMaskIntoConstraints = false; 
[self.view addSubview:buttonSignUp]; 

UIButton *buttonFP = [UIButton buttonWithType:UIButtonTypeCustom]; 
[buttonFP setTag:101]; 
[buttonFP setTitle:@"SIGNUP" forState:UIControlStateNormal]; 
[buttonFP addTarget:self action:@selector(<your selector>) forControlEvents:UIControlEventTouchUpInside]; 
buttonFP.translatesAutoresizingMaskIntoConstraints = false; 
[self.view addSubview:buttonFP]; 

//setting constraints 

//logoImage 
//leading 
[self.view addConstraint:[NSLayoutConstraint constraintWithItem:logoImage attribute:NSLayoutAttributeLeading relatedBy:NSLayoutRelationEqual toItem:self.view attribute:NSLayoutAttributeLeading multiplier:1.0 constant:10]]; 

//Top 
[self.view addConstraint:[NSLayoutConstraint constraintWithItem:logoImage attribute:NSLayoutAttributeTop relatedBy:NSLayoutRelationEqual toItem:self.view attribute:NSLayoutAttributeTop multiplier:1.0 constant:10]]; 

//traling 
[self.view addConstraint:[NSLayoutConstraint constraintWithItem:self.view attribute:NSLayoutAttributeTrailing relatedBy:NSLayoutRelationEqual toItem:logoImage attribute:NSLayoutAttributeTrailing multiplier:1.0 constant:10]]; 


// usernameField 
//leading 
[self.view addConstraint:[NSLayoutConstraint constraintWithItem:usernameField attribute:NSLayoutAttributeLeading relatedBy:NSLayoutRelationEqual toItem:self.view attribute:NSLayoutAttributeLeading multiplier:1.0 constant:10]]; 

//traling 
[self.view addConstraint:[NSLayoutConstraint constraintWithItem:self.view attribute:NSLayoutAttributeTrailing relatedBy:NSLayoutRelationEqual toItem:usernameField attribute:NSLayoutAttributeTrailing multiplier:1.0 constant:10]]; 

//top 
[self.view addConstraint:[NSLayoutConstraint constraintWithItem:logoImage attribute:NSLayoutAttributeBottom relatedBy:NSLayoutRelationEqual toItem:usernameField attribute:NSLayoutAttributeTop multiplier:1.0 constant:10]]; 

//passwordField 
//leading 
[self.view addConstraint:[NSLayoutConstraint constraintWithItem:passwordField attribute:NSLayoutAttributeLeading relatedBy:NSLayoutRelationEqual toItem:self.view attribute:NSLayoutAttributeLeading multiplier:1.0 constant:10]]; 

//traling 
[self.view addConstraint:[NSLayoutConstraint constraintWithItem:self.view attribute:NSLayoutAttributeTrailing relatedBy:NSLayoutRelationEqual toItem:passwordField attribute:NSLayoutAttributeTrailing multiplier:1.0 constant:10]]; 

//top 
[self.view addConstraint:[NSLayoutConstraint constraintWithItem:passwordField attribute:NSLayoutAttributeBottom relatedBy:NSLayoutRelationEqual toItem:passwordField attribute:NSLayoutAttributeTop multiplier:1.0 constant:10]]; 


//buttonSignUp and buttonFP 

//leading for buttonSignUp 
[self.view addConstraint:[NSLayoutConstraint constraintWithItem:buttonSignUp attribute:NSLayoutAttributeLeading relatedBy:NSLayoutRelationEqual toItem:self.view attribute:NSLayoutAttributeLeading multiplier:1.0 constant:10]]; 

//traling for buttonFP 
[self.view addConstraint:[NSLayoutConstraint constraintWithItem:self.view attribute:NSLayoutAttributeTrailing relatedBy:NSLayoutRelationEqual toItem:buttonFP attribute:NSLayoutAttributeTrailing multiplier:1.0 constant:10]]; 

//equal width for both 
[self.view addConstraint:[NSLayoutConstraint constraintWithItem:buttonFP attribute:NSLayoutAttributeWidth relatedBy:NSLayoutRelationEqual toItem:buttonSignUp attribute:NSLayoutAttributeWidth multiplier:1.0 constant:0]]; 

//space between both btns 
[self.view addConstraint:[NSLayoutConstraint constraintWithItem:buttonFP attribute:NSLayoutAttributeLeft relatedBy:NSLayoutRelationEqual toItem:buttonSignUp attribute:NSLayoutAttributeRight multiplier:1.0 constant:10]]; 

//top for both 
[self.view addConstraint:[NSLayoutConstraint constraintWithItem:buttonSignUp attribute:NSLayoutAttributeBottom relatedBy:NSLayoutRelationEqual toItem:passwordField attribute:NSLayoutAttributeTop multiplier:1.0 constant:10]]; 

[self.view addConstraint:[NSLayoutConstraint constraintWithItem:buttonFP attribute:NSLayoutAttributeBottom relatedBy:NSLayoutRelationEqual toItem:passwordField attribute:NSLayoutAttributeTop multiplier:1.0 constant:10]]; 

//bottom 
[self.view addConstraint:[NSLayoutConstraint constraintWithItem:self.view attribute:NSLayoutAttributeBottom relatedBy:NSLayoutRelationEqual toItem:buttonFP attribute:NSLayoutAttributeBottom multiplier:1.0 constant:10]]; 

[self.view addConstraint:[NSLayoutConstraint constraintWithItem:self.view attribute:NSLayoutAttributeBottom relatedBy:NSLayoutRelationEqual toItem:buttonSignUp attribute:NSLayoutAttributeBottom multiplier:1.0 constant:10]]; 
+0

спасибо @MGP замечательная работа ..... –

0

После добавления @IBOutlet каждый из предметов на Vie wController. Вы можете использовать Язык автоматического форматирования Auto Layout для реализации программных ограничений. Вот пример кода для понимания из моего проекта.

(Swift Version) Если ячейка awakeFromNib или или страница, которую вы можете использовать в viewDidLoad:

avaImg.translatesAutoresizingMaskIntoConstraints = false 
    usernameBtn.translatesAutoresizingMaskIntoConstraints = false 
    infoLbl.translatesAutoresizingMaskIntoConstraints = false 
    dateLbl.translatesAutoresizingMaskIntoConstraints = false 

    self.contentView.addConstraints(NSLayoutConstraint.constraintsWithVisualFormat(
     "H:|-10-[ava(30)]-10-[username]-7-[info]-10-[date]", 
     options: [], metrics: nil, views: ["ava":avaImg, "username":usernameBtn, "info":infoLbl, "date":dateLbl])) 

    self.contentView.addConstraints(NSLayoutConstraint.constraintsWithVisualFormat(
     "V:|-10-[ava(30)]-10-|", 
     options: [], metrics: nil, views: ["ava":avaImg])) 

    self.contentView.addConstraints(NSLayoutConstraint.constraintsWithVisualFormat(
     "V:|-10-[username(30)]", 
     options: [], metrics: nil, views: ["username":usernameBtn])) 

    self.contentView.addConstraints(NSLayoutConstraint.constraintsWithVisualFormat(
     "V:|-10-[info(30)]" 
     , options: [], metrics: nil, views: ["info":infoLbl])) 

    self.contentView.addConstraints(NSLayoutConstraint.constraintsWithVisualFormat(
     "V:|-10-[date(30)]", 
     options: [], metrics: nil, views: ["date":dateLbl])) 

Дополнительная ссылка цитируется до того Using Autolayout Visual Format with Swift?

(Objective-C версии) Вы можете найти here много деталей, чтобы сделать то же самое.

Смежные вопросы