添加填充到UIView
我正在寻找一种方法来添加padding
属性到UIView。 理想情况下,我想避免将其分类并将其归类。 用法是这样的:
myview.padding = UIEdgeInsetsMake(10, 10, 10, 10);
也可能有一个paddingBox
属性,它将返回一个描述内部填充框大小和位置的CGRect
。
现在,如何实现这样的类别。 我最初虽然使用bounds
,但不幸的是bounds
的大小链接到frame
的大小(总是相同的)只有坐标可以不同。
这通常是通过在视图中设置边界来完成的。 所以如果你想要一个10的插图,你可以做:
view.bounds = CGRectInset(view.frame, 10.0f, 10.0f);
边界定义了视图相对于框架的可绘制区域。 所以这应该实际上是一个填充。 然后你可以从边界获得'paddingBox'。
希望这可以帮助! 🙂
Swift 3的更新
view.bounds = view.frame.insetBy(dx: 10.0, dy: 10.0)
🙂
你真正必须做的是创build一个视图,并添加一个子视图。 让一个视图的背景,并给它你想要的框架。 然后使第二个子视图与边缘插图所需的框架。
UIView backgroundView = new UIView(CGRect.FromLTRB(0, 0, 100, 100)) { BackgroundColor = backgroundGray, }; //Will have a right edge inset of 10 UIView edgyView = new UIView(CGRect.FromLTRB(0, 0, 90, 100)) { BackgroundColor = backgroundGray, } backgroundView.AddSubview(edgyView);
从iOS 8开始,每个视图现在都有一个与填充相对应的layoutMargins
属性。
myview.layoutMargins = UIEdgeInsetsMake(10, 10, 10, 10);
当你使用AutoLayout,格式为|-[subview]-|
, |
将引用由layoutMargins
定义的边。
资料来源: https : //developer.apple.com/reference/uikit/uiview/1622566-layoutmargins?language=objc