iOS8 : Swift Resize UITextView or UIImageView
Hello, Après un petit moment sans publier par manque de temps, voici deux petites astuces. Lorsque l'on récupère des flux JSON pour réaliser des applications, on a souvent une View contenant une image et du texte (Un article, un post Facebook / Twitter / Instagram, ...).
Cette UiView
doit donc contenir l'image (UIImageView
) du Post, et le text (UITextView
) de ce dernier.
Après être passé sur de nombreuses applications de l'AppStore, la solution qui semble être la plus propre tout en demeurant simple, est d'utiliser une scrollView
qui contiendra ces deux éléments. Jusque la rien de difficile, on simule une page web, une page contenant notre texte et notre image, sur laquelle l'utilisateur pourra scroller.
Voici deux petites solutions glanées sur internet qui répondront aux problèmes suivant que vous êtes susceptible de rencontrer :
-
Redimensionner votre
UIImageView
à la largeur de l'écran, de manière à ce qu'elle s'ajuste automatiquement suivant la version d'iPhone ou d'iPad sur laquelle l'application est lancée :// resize image let size = CGSizeMake(self.view.bounds.width, self.view.bounds.width) myImage.image! = imageResize(image: myImage.image!,sizeChange: size) func imageResize (#image:UIImage, sizeChange:CGSize)-> UIImage{ let hasAlpha = true let scale: CGFloat = 0.0 // Use scale factor of main screen UIGraphicsBeginImageContextWithOptions(sizeChange, !hasAlpha, scale) image.drawInRect(CGRect(origin: CGPointZero, size: sizeChange)) let scaledImage = UIGraphicsGetImageFromCurrentImageContext() return scaledImage }
-
Interdire le scrolling sur votre
UITextView
puis de la redimensionner en fonction du texte qu'elle contient :myText.scrollEnabled = false var contentSize = myText.sizeThatFits(CGSizeMake(myText.frame.size.width, CGFloat.max)) for c in myText.constraints() { if c.isKindOfClass(NSLayoutConstraint) { var constraint = c as! NSLayoutConstraint if constraint.firstAttribute == NSLayoutAttribute.Height { constraint.constant = contentSize.height break } } }
Enjoy ;)