Re: WebViews and the Java Plugin

2016-02-06 Thread Jens Alfke

___

Cocoa-dev mailing list (Cocoa-dev@lists.apple.com)

Please do not post admin requests or moderator comments to the list.
Contact the moderators at cocoa-dev-admins(at)lists.apple.com

Help/Unsubscribe/Update your Subscription:
https://lists.apple.com/mailman/options/cocoa-dev/archive%40mail-archive.com

This email sent to arch...@mail-archive.com

Re: auto-layout and rotated UILabels

2016-02-06 Thread Steve Christensen
On Feb 4, 2016, at 2:59 PM, Quincey Morris 
 wrote:
> 
> On Feb 4, 2016, at 13:01 , Steve Christensen  > wrote:
>> 
>> it looks like the width of the embedding view is set to the text width of 
>> the UILabel instead of the text height, which is borne out by the view 
>> geometry
> 
> Can you use a custom class for the embedding view and override its 
> ‘intrinsicContentSize’ property to return the inner view’s height and width 
> reversed?

Quincey: Thanks for a starting point.

I spent this afternoon playing around with it some more. Overriding 
-intrinsicContentSize does result in a correctly sized bounds, but the frame is 
still invalid and the view contents are still drawn incorrectly.

I finally found a simple solution that avoids all the headache of trying to get 
auto layout to play nicely with a transformed UILabel: I don't apply a 
transform to the UILabel. Instead I subclass UILabel and override two of its 
methods: -textRectForBounds:limitedToNumberOfLines: (which 
-intrinsicContentSize calls) and -drawTextInRect:.


- (CGRect) textRectForBounds:(CGRect)bounds 
limitedToNumberOfLines:(NSInteger)numberOfLines
{
CGRect  textRect = [super textRectForBounds:bounds 
limitedToNumberOfLines:numberOfLines];

return CGRectMake(textRect.origin.y, textRect.origin.x, 
textRect.size.height, textRect.size.width);
}

- (void) drawTextInRect:(CGRect)rect
{
CGContextRefcontext = UIGraphicsGetCurrentContext();
CGRect  bounds  = self.bounds;
CGFloat translateX  = bounds.size.width / 2;
CGFloat translateY  = bounds.size.height / 2;
CGAffineTransform   transform   = CGAffineTransformIdentity;

transform = CGAffineTransformTranslate(transform, translateX, 
translateY);
transform = CGAffineTransformRotate(transform, (CGFloat)-M_PI_2);
transform = CGAffineTransformTranslate(transform, -translateX, 
-translateY);

CGContextSaveGState(context);
CGContextConcatCTM(context, transform);

rect = CGRectApplyAffineTransform(rect, transform);
[super drawTextInRect:rect];

CGContextRestoreGState(context);
}

___

Cocoa-dev mailing list (Cocoa-dev@lists.apple.com)

Please do not post admin requests or moderator comments to the list.
Contact the moderators at cocoa-dev-admins(at)lists.apple.com

Help/Unsubscribe/Update your Subscription:
https://lists.apple.com/mailman/options/cocoa-dev/archive%40mail-archive.com

This email sent to arch...@mail-archive.com