Impossible de redimensionner UIView dans IB

87

Probablement quelque chose de simple, mais je ne peux pas comprendre pourquoi je ne peux pas redimensionner un UIView dans un xib dans Interface Builder.

J'ai créé une nouvelle vue XIB dans xcode et dans l'inspecteur de taille, la largeur et la hauteur sont désactivées et grisées à 320 par 460. C'est étrange car je peux changer la taille des deux autres vues (associées aux deux autres barres d'onglets articles).

Je ne sais pas si cela a quelque chose à voir, mais j'ai récemment mis à jour le sdk à 3.

Merci!


la source

Réponses:

81

Je pense que vous ne pouvez pas modifier la taille tout en simulant des éléments de l'interface utilisateur tels que la barre d'état dans Interface Builder. Vous pouvez essayer de désactiver les éléments simulés si certains sont activés. Je ne sais pas exactement pourquoi, alors j'apprécierais les commentaires de tous ceux qui savent exactement pourquoi - il doit y avoir une bonne raison.

teabot
la source
1
Merci c'est vrai. Après avoir mis à niveau xcode et IB, la barre d'état était activée par défaut. Les autres l'ont à off.
1
À partir de Xcode 4.2, iOS 5.0.1, cela a changé. Ma réponse ci-dessous explique comment cela peut être réalisé.
lol
1
Très utile. Éteignez simplement la barre d'état, ajustez la taille, puis rallumez la barre d'état.
Wollan le
9
Ce paramètre a fonctionné pour un ViewController.xib dans Xcode 4.3.3: "Métriques simulées - Taille: forme libre". Après cela, le paramètre de taille de vue est activé. Supprimez également l'option "Afficher le mode" échelle pour remplir (juste en dessous des métriques simulées).
defvol
uuuugh Je n'aime vraiment pas cet IDE
Saik Caskey
78

Pour y parvenir dans XCode 4.6.3 / 5.0.2, vous devez suivre la capture d'écran ci-dessous:

  1. Sous 'Inspecteur de fichiers' -> décochez Use Auto Layout
  2. Cliquez sur le sélecteur d'attributs et choisissez la Freeformtaille

Ceci est nécessaire lors de la création d'un headerView pour un tableView

entrez la description de l'image ici

Houman
la source
40

La pièce que vous recherchez se trouve sur le premier panneau Inspecteur (Commande-1). Tout en haut se trouve une section intitulée Éléments d'interface utilisateur simulés. Par défaut, la barre d'état est activée. Vous devez vous assurer que tous les trois sont définis sur Aucun.

Thomas Mon
la source
2
Merci, ces réponses m'ont fait gagner beaucoup de temps! Quelqu'un sait pourquoi IB fait cela?
Gregor
Merci mon pote. Je cherchais celui-là.
natanavra
Remarque à tous, c'est maintenant: "Non spécifié" au lieu de rien. (J'ai la version 3.2.3)
IcyBlueRose
Je confirme que pour iPad est "Non spécifié", merci Thomas Mon, vous m'avez sauvé quelques heures: D
Qlimax
Je ne vois cela que pour les contrôleurs de vue, pas pour les vues
BigBoy1337
26

Comme pour Xcode 4.2, iOS 5.0.1, les métriques simulées par défaut incluent la simulation de l'attribut 'size' de UIViewControllers sur 'Inferred'

Si vous modifiez cet attribut en 'Freeform', vous pouvez redimensionner l'UIView contenu dans UIViewController tout en simulant la barre d'état (ou toute autre des simulations d'ailleurs)

lol
la source
1
L'attribut de taille est désormais défini par défaut sur "Plein écran Retina 4", mais le modifier sur "Forme libre" fonctionne toujours.
Pier-Luc Gendreau
4

Accédez simplement à l'inspecteur, accédez au premier panneau (ou appuyez sur commande-1), puis modifiez les champs marqués Barre d'état, Barre supérieure et Barre inférieure sur Aucun dans la section intitulée "Éléments d'interface utilisateur simulés". Vous devrez peut-être cliquer sur le petit triangle pour les rendre visibles.


la source
1

C'est drôle, j'ai un problème similaire. J'ai supprimé toutes les vues du fichier xib et ré-ajouté une vue. Définissez la barre d'état sur "non spécifié" afin que la barre d'état ne soit pas prise en charge. La vue, une fois ajoutée, est créée avec x = 0, y = 0, w = 320 h = 460 au lieu de (0,0,320,480) comme je l'aurais prévu. Après avoir changé la hauteur à 480 et connecté au propriétaire du fichier et changé la couleur pour la rendre distinctive par rapport à l'arrière-plan. Je pense qu'il y avait une bande blanche entre le haut de l'écran et la vue. J'ai augmenté mon code avec:

#define RECTLOG (rect) (NSLog (@ "" #rect @ "x:% fy:% fw:% fh:% f", rect.origin.x, rect.origin.y, rect.size.width, rect .size.height));

dans viewDidLoad

- (void) viewDidLoad {
    [super viewDidLoad];
    RECTLOG (self.view.frame);
}

Il s'avère que la vue est telle qu'elle est chargée à partir d'IB est en fait (0, 20, 320, 480) Pour contourner le problème, j'ai réinitialisé le cadre de la vue avec self.view.frame = CGRectMake (0, 0, 320, 480);

J'utilise IB 3.2.5

J'adorerais connaître une petite solution pour celui-ci.

cramhead
la source
3
Pour info, vous pouvez utiliser NSStringFromCGRect (rect) pour obtenir une chaîne imprimable représentant un CGRect.
Berry le
C'était un excellent FYI, je l'ai vérifié, et vous pouvez également obtenir une valeur de chaîne à partir d'un CGPoint et d'un CGSize! très cuisinier, merci.
FierceMonkey
1

J'ai remarqué que l'UIView créé automatiquement lors de la création du fichier xib ne peut pas être redimensionné à partir du panneau de dimensionnement ou des poignées de bord.

Tout ce que j'ai fait était d'ajouter un autre UIView et de tout faire glisser de mon ancien UIView vers le nouveau, puis de supprimer l'ancien.

Cela a résolu le problème pour moi, mais oui, je pense qu'il y a un problème sous-jacent avec le constructeur d'interface qu'Apple doit résoudre (quelqu'un me corrige si je me trompe).

J'utilise le constructeur d'interface intégré XCode 4.

PowerAktar
la source
0

Je l'ai trié d'une manière différente ...

ouvrez votre xib avec votre éditeur de texte préféré et modifiez cette ligne

        <placeholder placeholderIdentifier="IBFilesOwner" id="-1" userLabel="File's Owner" customClass="CompassViewController">

CompassViewController est le nom de votre classe avec lequel vous essayez de lier votre nib / xib.

Modifiez simplement le nom de votre classe avec le nom de classe correct et vous avez terminé;)

jeet.chanchawat
la source
0

entrez la description de l'image iciDans le storyboard, sélectionnez l'UIVIew et accédez à l'inspecteur d'attributs, changez la taille de UIVIew en "FreeForm" au lieu de "Inferred"

Jane.Abraham
la source