添加填充到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