ios cocoa-touch uikit uilabel

ios - Margen de texto UILabel



cocoa-touch uikit (30)

A muchas de las respuestas les falta el reemplazo de sizeThatFits. Con esta subclase, puede crear la etiqueta, establecer el relleno y luego decir label.SizeToFit () y listo.

import UIKit class UILabelEx : UILabel { var padding : UIEdgeInsets = UIEdgeInsets(top: 0, left: 0, bottom: 0, right: 0) override func drawTextInRect(rect: CGRect) { super.drawTextInRect(UIEdgeInsetsInsetRect(rect, padding)) } override func sizeThatFits(size: CGSize) -> CGSize { var adjSize = super.sizeThatFits(size) adjSize.width += padding.left + padding.right adjSize.height += padding.top + padding.bottom return adjSize } }

Estoy buscando establecer la inserción / margen izquierdo de una UILabel y no puedo encontrar un método para hacerlo. La etiqueta tiene un conjunto de fondo, por lo que cambiar su origen no servirá de nada. Sería ideal insertar el texto 10px en el lado izquierdo.


Aquí hay una solución rápida. Solo agregue esta clase personalizada en la parte inferior de su archivo (o cree un nuevo archivo para ella) y use MyLabel en lugar de UILabel al crear su etiqueta.

class MyLabel: UILabel{ override func drawTextInRect(rect: CGRect) { super.drawTextInRect(UIEdgeInsetsInsetRect(rect, UIEdgeInsets(top: 0, left: 10, bottom: 0, right: 0))) } }


Con Swift 3, puede tener el efecto deseado creando una subclase de UILabel . En esta subclase, tendrá que agregar una propiedad UIEdgeInsets con las inserciones requeridas y anular el drawText(in:) , la propiedad intrinsicContentSize (para el código de diseño automático) y / o el sizeThatFits(_:) (para el código de resortes y puntales).

import UIKit class PaddingLabel: UILabel { let padding: UIEdgeInsets // Create a new PaddingLabel instance programamtically with the desired insets required init(padding: UIEdgeInsets = UIEdgeInsets(top: 0, left: 10, bottom: 0, right: 10)) { self.padding = padding super.init(frame: CGRect.zero) } // Create a new PaddingLabel instance programamtically with default insets override init(frame: CGRect) { padding = UIEdgeInsets.zero // set desired insets value according to your needs super.init(frame: frame) } // Create a new PaddingLabel instance from Storyboard with default insets required init?(coder aDecoder: NSCoder) { padding = UIEdgeInsets.zero // set desired insets value according to your needs super.init(coder: aDecoder) } override func drawText(in rect: CGRect) { super.drawText(in: UIEdgeInsetsInsetRect(rect, padding)) } // Override `intrinsicContentSize` property for Auto layout code override var intrinsicContentSize: CGSize { let superContentSize = super.intrinsicContentSize let width = superContentSize.width + padding.left + padding.right let heigth = superContentSize.height + padding.top + padding.bottom return CGSize(width: width, height: heigth) } // Override `sizeThatFits(_:)` method for Springs & Struts code override func sizeThatFits(_ size: CGSize) -> CGSize { let superSizeThatFits = super.sizeThatFits(size) let width = superSizeThatFits.width + padding.left + padding.right let heigth = superSizeThatFits.height + padding.top + padding.bottom return CGSize(width: width, height: heigth) } }

El siguiente ejemplo muestra cómo usar PaddingLabel instancias de PaddingLabel en un UIViewController :

import UIKit class ViewController: UIViewController { @IBOutlet weak var storyboardAutoLayoutLabel: PaddingLabel! let autoLayoutLabel = PaddingLabel(padding: UIEdgeInsets(top: 20, left: 40, bottom: 20, right: 40)) let springsAndStructsLabel = PaddingLabel(frame: CGRect.zero) var textToDisplay = "Lorem ipsum dolor sit er elit lamet." override func viewDidLoad() { super.viewDidLoad() // Set autoLayoutLabel autoLayoutLabel.text = textToDisplay autoLayoutLabel.backgroundColor = .red autoLayoutLabel.translatesAutoresizingMaskIntoConstraints = false view.addSubview(autoLayoutLabel) autoLayoutLabel.leadingAnchor.constraint(equalTo: view.leadingAnchor, constant: 30).isActive = true autoLayoutLabel.centerYAnchor.constraint(equalTo: view.centerYAnchor).isActive = true // Set springsAndStructsLabel springsAndStructsLabel.text = textToDisplay springsAndStructsLabel.backgroundColor = .green view.addSubview(springsAndStructsLabel) springsAndStructsLabel.frame.origin = CGPoint(x: 30, y: 90) springsAndStructsLabel.sizeToFit() // Set storyboardAutoLayoutLabel storyboardAutoLayoutLabel.text = textToDisplay storyboardAutoLayoutLabel.backgroundColor = .blue } // Link this IBAction to a UIButton or a UIBarButtonItem in Storyboard @IBAction func updateLabelText(_ sender: Any) { textToDisplay = textToDisplay == "Lorem ipsum dolor sit er elit lamet." ? "Lorem ipsum." : "Lorem ipsum dolor sit er elit lamet." // autoLayoutLabel autoLayoutLabel.text = textToDisplay // springsAndStructsLabel springsAndStructsLabel.text = textToDisplay springsAndStructsLabel.sizeToFit() // storyboardAutoLayoutLabel storyboardAutoLayoutLabel.text = textToDisplay } }


Creo que la clase UILabel no tiene un método para establecer el margen. ¿Por qué no establece la posición de Etiqueta en el lugar requerido?

Ver código abajo:

UILabel *label = [[UILabel alloc] init]; label.text = @"This is label"; label.frame = CGRectMake(0,0,100,100);

Si es del creador de interfaces, simplemente coloque la etiqueta siguiendo:

yourLabel.frame = CGRectMake(0,0,100,100);


El mejor enfoque para agregar relleno a un UILabel es subclase UILabel y agregar una propiedad edgeInsets. A continuación, establece las inserciones deseadas y la etiqueta se dibujará en consecuencia.

OSLabel.h

#import <UIKit/UIKit.h> @interface OSLabel : UILabel @property (nonatomic, assign) UIEdgeInsets edgeInsets; @end

OSLabel.m

#import "OSLabel.h" @implementation OSLabel - (id)initWithFrame:(CGRect)frame{ self = [super initWithFrame:frame]; if (self) { self.edgeInsets = UIEdgeInsetsMake(0, 0, 0, 0); } return self; } - (void)drawTextInRect:(CGRect)rect { [super drawTextInRect:UIEdgeInsetsInsetRect(rect, self.edgeInsets)]; } - (CGSize)intrinsicContentSize { CGSize size = [super intrinsicContentSize]; size.width += self.edgeInsets.left + self.edgeInsets.right; size.height += self.edgeInsets.top + self.edgeInsets.bottom; return size; } @end


En Swift se resuelve así.

class Label: UILabel { override func drawTextInRect(rect: CGRect) { super.drawTextInRect(UIEdgeInsetsInsetRect(rect, UIEdgeInsets(top: 0, left: 10, bottom: 0, right: 10))) } }


En lugar de UILabel tal vez use github.com/mattt/TTTAttributedLabel

BITAttributedLabel *label = [BITAttributedLabel new]; label.font = font; label.text = @"hello"; label.textInsets = UIEdgeInsetsMake(10, 10, 10, 10); [label sizeToFit];


Esto funciona correctamente con etiquetas multilínea:

class PaddedLabel: UILabel { var verticalPadding: CGFloat = 0 var horizontalPadding: CGFloat = 0 override func drawText(in rect: CGRect) { let insets = UIEdgeInsets(top: verticalPadding, left: horizontalPadding, bottom: verticalPadding, right: horizontalPadding) super.drawText(in: UIEdgeInsetsInsetRect(rect, insets)) } override var intrinsicContentSize: CGSize { get { let textWidth = super.intrinsicContentSize.width - horizontalPadding * 2 let textHeight = sizeThatFits(CGSize(width: textWidth, height: .greatestFiniteMagnitude)).height let width = textWidth + horizontalPadding * 2 let height = textHeight + verticalPadding * 2 return CGSize(width: frame.width, height: height) } } }


La respuesta de blyabtroi se convirtió en Swift (no se requiere subclase)

let style: NSMutableParagraphStyle = NSParagraphStyle.defaultParagraphStyle().mutableCopy() as! NSMutableParagraphStyle style.alignment = .Justified style.firstLineHeadIndent = 10.0 style.headIndent = 10.0 style.tailIndent = -10.0 let attrText: NSAttributedString = NSAttributedString(string: title, attributes: [NSParagraphStyleAttributeName:style]) let label: UILabel = UILabel(frame: someFrame) label.numberOfLines = 0 label.attributedText = attrText


Muchas de estas respuestas son complicadas. En algunos casos, eso es necesario. Sin embargo, si estás leyendo esto, tu etiqueta no tiene margen izquierdo / derecho, y solo quieres un poco de relleno, aquí está la solución completa:

Paso 1: Agrega espacios al final (literalmente, pulsa la barra espaciadora varias veces)

Paso 2: establece la alineación del texto de la etiqueta en centrado

Hecho


No encontré la sugerencia de usar UIButton en las respuestas anteriores. Así que voy a proponer.

Mi situación con un UIButton fue la mejor solución porque:

  • Tenía un simple texto de una sola línea
  • No quería usar UIView como contenedor para UILabel (es decir, quería simplificar los cálculos matemáticos para Autolayout en mi celda)
  • No quise usar NSParagraphStyle (porque tailIndent funciona incorrectamente con Autolayout - el ancho de UILabel es más pequeño de lo esperado)
  • No quise usar UITextView (debido a posibles efectos secundarios)
  • No quería subclase UILabel

Por lo tanto, el uso de contentInsets en UIButton en mi situación se convierte en la forma más fácil de agregar márgenes de texto.

Espero que esto ayude a alguien.


Para ampliar la respuesta provista por Brody Robertson, puede agregar los bits de IB Designable. Esto significa que puede ajustar la etiqueta desde Storyboard.

En tu subclase UILabel hacer

#import <UIKit/UIKit.h> IB_DESIGNABLE @interface insetLabel : UILabel @property (nonatomic, assign) IBInspectable CGFloat leftEdge; @property (nonatomic, assign) IBInspectable CGFloat rightEdge; @property (nonatomic, assign) IBInspectable CGFloat topEdge; @property (nonatomic, assign) IBInspectable CGFloat bottomEdge; @property (nonatomic, assign) UIEdgeInsets edgeInsets; @end

Entonces hazlo;

#import "insetLabel.h" @implementation insetLabel - (id)initWithFrame:(CGRect)frame { self = [super initWithFrame:frame]; if (self) { self.edgeInsets = UIEdgeInsetsMake(self.topEdge, self.leftEdge, self.bottomEdge, self.rightEdge); } return self; } - (void)drawTextInRect:(CGRect)rect { self.edgeInsets = UIEdgeInsetsMake(self.topEdge, self.leftEdge, self.bottomEdge, self.rightEdge); [super drawTextInRect:UIEdgeInsetsInsetRect(rect, self.edgeInsets)]; } - (CGSize)intrinsicContentSize { CGSize size = [super intrinsicContentSize]; size.width += self.edgeInsets.left + self.edgeInsets.right; size.height += self.edgeInsets.top + self.edgeInsets.bottom; return size; } @end

EDITAR

Probablemente debería agregar un método de establecimiento para edgeInsets.


Para deshacerme del relleno vertical para una sola etiqueta de línea hice:

// I have a category method setFrameHeight; you''ll likely need to modify the frame. [label setFrameHeight:font.pointSize];

O, sin la categoría, usar:

CGRect frame = label.frame; frame.size.height = font.pointSize; label.frame = frame;


Para el texto multilínea, el margen izquierdo y derecho se puede configurar utilizando NSAttributedString.

NSMutableParagraphStyle *style = [[NSParagraphStyle defaultParagraphStyle] mutableCopy]; style.alignment = NSTextAlignmentJustified; style.firstLineHeadIndent = 10.0f; style.headIndent = 10.0f; style.tailIndent = -10.0f; NSAttributedString *attrText = [[NSAttributedString alloc] initWithString:title attributes:@{ NSParagraphStyleAttributeName : style}]; UILabel * label = [[UILabel alloc] initWithFrame:someFrame]; label.numberOfLines = 0; label.attributedText = attrText;


Para usuarios de Xamarin (usando API unificada):

class UIMarginLabel : UILabel { public UIMarginLabel() { } public UIMarginLabel( RectangleF frame ) : base( frame ) { } public UIEdgeInsets Insets { get; set; } public override void DrawText( CGRect rect ) { base.DrawText( Insets.InsetRect( rect ) ); } }

Y para aquellos que usan la API original de MonoTouch:

public class UIMarginLabel : UILabel { public UIEdgeInsets Insets { get; set; } public UIMarginLabel() : base() { Insets = new UIEdgeInsets(0, 0, 0, 0); } public UIMarginLabel(RectangleF frame) : base(frame) { Insets = new UIEdgeInsets(0, 0, 0, 0); } public override void DrawText(RectangleF frame) { base.DrawText(new RectangleF( frame.X + Insets.Left, frame.Y + Insets.Top, frame.Width - Insets.Left - Insets.Right, frame.Height - Insets.Top - Insets.Bottom)); } }


Si está utilizando la reproducción automática en iOS 6+, puede hacerlo ajustando intrinsicContentSize en una subclase de UILabel .

- (id)initWithFrame:(CGRect)frame { self = [super initWithFrame:frame]; if (self) { self.textAlignment = NSTextAlignmentRight; } return self; } - (CGSize)intrinsicContentSize { CGSize size = [super intrinsicContentSize]; return CGSizeMake(size.width + 10.0, size.height); }


Si no desea utilizar una vista principal adicional para establecer el fondo, puede subclase UILabel y anular textRectForBounds:limitedToNumberOfLines: Me gustaría añadir una propiedad textEdgeInsets o similar y luego hacer

- (CGRect)textRectForBounds:(CGRect)bounds limitedToNumberOfLines:(NSInteger)numberOfLines { return [super textRectForBounds:UIEdgeInsetsInsetRect(bounds,textEdgeInsets) limitedToNumberOfLines:numberOfLines]; }

Para mayor robustez, es posible que también desee llamar a [self setNeedsDisplay] en setTextEdgeInsets :, pero generalmente no me molesto.


Sin subclases y todo ese jazz ... hice esto dinámicamente:

[cell.textLabel setTranslatesAutoresizingMaskIntoConstraints:NO]; [cell.textLabel constraintTrailingEqualTo:cell.contentView constant:-100];

la parte de restricción es solo un código simple de envoltura de azúcar (tenemos los mismos métodos para agregar un relleno desde arriba / abajo / izquierda / derecha). Abriré el código de la totalidad de la envoltura si obtengo suficiente cariño aquí:

- (id)constraintTrailingEqualTo:(UIView *)toView constant:(CGFloat)constant { NSLayoutConstraint *cn = [NSLayoutConstraint constraintWithItem:self attribute:NSLayoutAttributeTrailing relatedBy:NSLayoutRelationEqual toItem:toView attribute:NSLayoutAttributeTrailing multiplier:1 constant:constant]; [toView addConstraint:cn]; return self; }

(note que hice esto en el contexto de

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath: (NSIndexPath *)indexPath;

puede que tengas que llamar [self setNeedsLayout]; Dependiendo de su contexto.


Solo agregue espacios a la izquierda si es una sola línea , más de 1 línea tendrá 0 rellenos nuevamente.

[self.myLabel setText:[NSString stringWithFormat:@" %@", self.myShortString]];


Subclasificar es un poco engorroso para un caso tan simple. Una alternativa es simplemente agregar el UILabel sin fondo establecido a una vista UIV con el fondo establecido. Ajuste la x de la etiqueta a 10 y haga que el tamaño de la vista exterior sea 10 píxeles más ancho que la etiqueta.


Tal vez más tarde para la fiesta, pero lo siguiente simplemente funciona. Sólo subclase UILabel.

#import "UITagLabel.h" #define padding UIEdgeInsetsMake(5, 10, 5, 10) @implementation UITagLabel - (void)drawTextInRect:(CGRect)rect { [super drawTextInRect:UIEdgeInsetsInsetRect(rect, padding)]; } - (CGSize) intrinsicContentSize { CGSize superContentSize = [super intrinsicContentSize]; CGFloat width = superContentSize.width + padding.left + padding.right; CGFloat height = superContentSize.height + padding.top + padding.bottom; return CGSizeMake(width, height); } - (CGSize) sizeThatFits:(CGSize)size { CGSize superSizeThatFits = [super sizeThatFits:size]; CGFloat width = superSizeThatFits.width + padding.left + padding.right; CGFloat height = superSizeThatFits.height + padding.top + padding.bottom; return CGSizeMake(width, height); } @end


Tal vez podrías darle una oportunidad a este código

CGRect frame = btn.titleLabel.frame; int indent = 20; int inset = 20; [btn.titleLabel setFrame:CGRectMake(frame.origin.x+inset,frame.origin.y,frame.size.width+indent,frame.size.height)];


También puede resolver esto inicializando su UILabel con un marco personalizado.

CGRect initialFrame = CGRectMake(0, 0, 100, 100); UIEdgeInsets contentInsets = UIEdgeInsetsMake(0, 10, 0, 0); CGRect paddedFrame = UIEdgeInsetsInsetRect(initialFrame, contentInsets); self.label = [[UILabel alloc] initWithFrame:paddedFrame];

Nod to CGRect trucos .


Terminé simplemente agregando algunos espacios al texto:

self.titleLabel.text = [NSString stringWithFormat:@" %@", self.titleLabel.text];

Feo pero efectivo, y no se requieren subclases.

Puedes probar "/ t" también. Para una solución genérica, por favor consulte la respuesta aceptada.


Versión compatible con Swift 3 y AutoLayout :

class InsetLabel: UILabel { var insets = UIEdgeInsets() convenience init(insets: UIEdgeInsets) { self.init(frame: CGRect.zero) self.insets = insets } convenience init(dx: CGFloat, dy: CGFloat) { let insets = UIEdgeInsets(top: dy, left: dx, bottom: dy, right: dx) self.init(insets: insets) } override func drawText(in rect: CGRect) { super.drawText(in: UIEdgeInsetsInsetRect(rect, insets)) } override var intrinsicContentSize: CGSize { var size = super.intrinsicContentSize size.width += insets.left + insets.right size.height += insets.top + insets.bottom return size } }


Versión rápida de la respuesta de Recycled Steel + intrinsizeContentSize() .

Es compatible con un estilo más tradicional de configuración de inserciones para otros objetos de vista con inserciones, al tiempo que se pueden configurar inserciones en Interface Builder, es decir, las inserciones se configuran de manera programática:

label.inset = UIEdgeInsetsMake(0, 0, 5, 0)

Por favor, hágamelo saber si hay algún error.

Swift 3

@IBDesignable class InsetLabel: UILabel { @IBInspectable var topInset: CGFloat = 0.0 @IBInspectable var leftInset: CGFloat = 0.0 @IBInspectable var bottomInset: CGFloat = 0.0 @IBInspectable var rightInset: CGFloat = 0.0 var insets: UIEdgeInsets { get { return UIEdgeInsetsMake(topInset, leftInset, bottomInset, rightInset) } set { topInset = newValue.top leftInset = newValue.left bottomInset = newValue.bottom rightInset = newValue.right } } override func drawText(in rect: CGRect) { super.drawText(in: UIEdgeInsetsInsetRect(rect, insets)) } override func sizeThatFits(_ size: CGSize) -> CGSize { var adjSize = super.sizeThatFits(size) adjSize.width += leftInset + rightInset adjSize.height += topInset + bottomInset return adjSize } override var intrinsicContentSize: CGSize { var contentSize = super.intrinsicContentSize contentSize.width += leftInset + rightInset contentSize.height += topInset + bottomInset return contentSize } }

Swift 2.2

@IBDesignable class InsetLabel: UILabel { @IBInspectable var topInset: CGFloat = 0.0 @IBInspectable var leftInset: CGFloat = 0.0 @IBInspectable var bottomInset: CGFloat = 0.0 @IBInspectable var rightInset: CGFloat = 0.0 var insets: UIEdgeInsets { get { return UIEdgeInsetsMake(topInset, leftInset, bottomInset, rightInset) } set { topInset = newValue.top leftInset = newValue.left bottomInset = newValue.bottom rightInset = newValue.right } } override func drawTextInRect(rect: CGRect) { super.drawTextInRect(UIEdgeInsetsInsetRect(rect, insets)) } override func sizeThatFits(size: CGSize) -> CGSize { var adjSize = super.sizeThatFits(size) adjSize.width += leftInset + rightInset adjSize.height += topInset + bottomInset return adjSize } override func intrinsicContentSize() -> CGSize { var contentSize = super.intrinsicContentSize() contentSize.width += leftInset + rightInset contentSize.height += topInset + bottomInset return contentSize } }


Xcode 6.1.1 solución Swift utilizando una extensión.

El nombre del archivo podría ser algo como "UILabel + AddInsetMargin.swift":

import UIKit extension UILabel { public override func drawRect(rect: CGRect) { self.drawTextInRect(UIEdgeInsetsInsetRect(rect, UIEdgeInsets(top: 0, left: 5, bottom: 0, right: 5))) } }


y un @IBDesignable que lo hace funcionar con Interface Builder

@IBDesignable class PaddedLabel: UILabel { @IBInspectable var inset:CGSize = CGSize(width: 0, height: 0) var padding: UIEdgeInsets { var hasText:Bool = false if let t = text?.length where t > 0 { hasText = true } else if let t = attributedText?.length where t > 0 { hasText = true } return hasText ? UIEdgeInsets(top: inset.height, left: inset.width, bottom: inset.height, right: inset.width) : UIEdgeInsets(top: 0, left: 0, bottom: 0, right: 0) } override func drawTextInRect(rect: CGRect) { super.drawTextInRect(UIEdgeInsetsInsetRect(rect, padding)) } override func intrinsicContentSize() -> CGSize { let superContentSize = super.intrinsicContentSize() let p = padding let width = superContentSize.width + p.left + p.right let heigth = superContentSize.height + p.top + p.bottom return CGSize(width: width, height: heigth) } override func sizeThatFits(size: CGSize) -> CGSize { let superSizeThatFits = super.sizeThatFits(size) let p = padding let width = superSizeThatFits.width + p.left + p.right let heigth = superSizeThatFits.height + p.top + p.bottom return CGSize(width: width, height: heigth) } }


UILabel esto subclasificando UILabel y anulando drawTextInRect: así:

- (void)drawTextInRect:(CGRect)rect { UIEdgeInsets insets = {0, 5, 0, 5}; [super drawTextInRect:UIEdgeInsetsInsetRect(rect, insets)]; }

equivalente en Swift 3.1:

override func drawText(in rect: CGRect) { let insets = UIEdgeInsets.init(top: 0, left: 5, bottom: 0, right: 5) super.drawText(in: UIEdgeInsetsInsetRect(rect, insets)) }

Como puedes haberte reunido, esta es una adaptación de la respuesta de tc . Tiene dos ventajas sobre esa:

  1. no hay necesidad de activarlo enviando un mensaje sizeToFit
  2. deja el marco de la etiqueta solo - útil si su etiqueta tiene un fondo y no desea que se reduzca

#import "E_LabelWithPadding.h" #define padding UIEdgeInsetsMake(2, 0, 2, 0) #define padding1 UIEdgeInsetsMake(0, 0, 0, 0) @implementation E_LabelWithPadding - (void)drawTextInRect:(CGRect)rect { if (![self.text isEqualToString:@""]) { [super drawTextInRect:UIEdgeInsetsInsetRect(rect, padding)]; }else { [super drawTextInRect:UIEdgeInsetsInsetRect(rect, padding1)]; }

}

- (CGSize) intrinsicContentSize { if (![self.text isEqualToString:@""]) { CGSize superContentSize = [super intrinsicContentSize]; CGFloat width = superContentSize.width + padding.left + padding.right; CGFloat height = superContentSize.height + padding.top + padding.bottom; return CGSizeMake(width, height); }else { CGSize superContentSize = [super intrinsicContentSize]; CGFloat width = superContentSize.width + padding1.left + padding1.right; CGFloat height = superContentSize.height + padding1.top + padding1.bottom; return CGSizeMake(width, height); }

}

- (CGSize) sizeThatFits:(CGSize)size { if (![self.text isEqualToString:@""]) { CGSize superSizeThatFits = [super sizeThatFits:size]; CGFloat width = superSizeThatFits.width + padding.left + padding.right; CGFloat height = superSizeThatFits.height + padding.top + padding.bottom; return CGSizeMake(width, height); }else { CGSize superSizeThatFits = [super sizeThatFits:size]; CGFloat width = superSizeThatFits.width + padding1.left + padding1.right; CGFloat height = superSizeThatFits.height + padding1.top + padding1.bottom; return CGSizeMake(width, height); }

}

@end