开发者

Border image on UIView

开发者 https://www.devze.com 2022-12-23 18:53 出处:网络
I want to have a UIView开发者_如何学运维 subclass that has a border image, but I don\'t want or care about this \'new\' frame/bounds around the border image itself.

I want to have a UIView开发者_如何学运维 subclass that has a border image, but I don't want or care about this 'new' frame/bounds around the border image itself.

What I wanted to do was just use drawRect and draw outside of the rect but all drawing is clipped and I don't see a way to not clip drawing outside of this context rect.

So now I have added a sublayer to the views layer, set [self clipsToBounds] on the view and override setFrame to control my sublayers frame and always keep it at the proper size (spilling over the views frame by 40px).

The problem with this is that setFrame on a uiview by default has no animation but seTFrame on a calayer does.

I cant just disable the animations on the calayers setFrame because if I were to call setFrame on the uiview inside a uiview animation block the calayer would still have its animation disabled.

The obvious solution is to look up the current animationDuration on the uiview animation and set a matching animation on the sublayer, but I don't know if this value is available. And even if it is, I'm afraid that calling an animation from within another animation is wrong.

Unfortunately the best solution is to not use a calayer at all and just add a uiview as a subview and draw into that just like I am drawing into my layer, and hope that with autoresizingMask set to height and width that everything will 'just work'. Just seems like unnecessary overhead for such a simple task.


My solution would be to override the initWithFrame: to add the surrounding border pixels and contain the content in a subview. It probably is unneccesary overhead but definietly the "cocoa" route. It's probably going to be easier in the end too since a subview structure will allow you to edit the content seperatly from the border so you dont have to redraw the border when you redraw the content. And keeping them seperate simply makes sense from a OOP perspective.

The clipsToBounds route is probably the easiest route besides the subview structure but managing the border and content in one drawing cycle and in one object will probably be a lot more work so it'll be worth the overhead.

Excuse any typos, typed this from my iPhone.

0

精彩评论

暂无评论...
验证码 换一张
取 消

关注公众号