使用swift 2,我尝试使用此代码使一个按钮四舍五入(并且它可以工作!):</ p>
Response.Clear();
Response.ContentType = "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet";
Response.AddHeader("content-disposition", "attachment;filename=" + HttpUtility.UrlEncode("Logs.xlsx", System.Text.Encoding.UTF8));
using (ExcelPackage pck = new ExcelPackage())
{
ExcelWorksheet ws = pck.Workbook.Worksheets.Add("Logs");
ws.Cells["A1"].LoadFromDataTable(dt, true);
var ms = new System.IO.MemoryStream();
pck.SaveAs(ms);
ms.WriteTo(Response.OutputStream);
}
不幸的是,我有很多按钮,我想知道是否有办法让所有按钮都圆整,而不是每次都复制和粘贴上面的代码。
答案 0 :(得分:13)
您可以通过UIAppearance执行此操作,SO question是一个代理,允许您为UIKit
类的所有对象配置属性。
首先,由于UIAppearance
适用于UIView
本身的属性,而您想控制的属性位于按钮层,因此您需要将其公开为外观:
extension UIButton {
dynamic var borderColor: UIColor? {
get {
if let cgColor = layer.borderColor {
return UIColor(CGColor: cgColor)
}
return nil
}
set { layer.borderColor = newValue?.CGColor }
}
dynamic var borderWidth: CGFloat {
get { return layer.borderWidth }
set { layer.borderWidth = newValue }
}
dynamic var cornerRadius: CGFloat {
get { return layer.cornerRadius }
set { layer.cornerRadius = newValue }
}
}
<{1>}在Swift
中,dynamic
关键字指示编译为属性生成getter和setter,以便UIAppearance
将其标识为可配置,(请参阅此Apple's documentation ,以及{{3}}了解更多详情。)
然后,您可以在UIButton
类的ui外观上设置属性:
UIButton.appearance().borderColor = UIColor.grayColor();
UIButton.appearance().borderWidth = 2;
UIButton.appearance().cornerRadius = 20;
您应该在应用程序启动期间进行配置,因为在将视图添加到窗口时应用了外观更改(请参阅UIAppearance
文档中的注释)。
如果您只想为类中的某些按钮提供这些默认属性,则可以继承UIButton
,并使用该类的外观而不是UIButton
。例如:
class MyButton: UIButton {}
...
MyButton.appearance().borderColor = UIColor.grayColor();
MyButton.appearance().borderWidth = 2;
MyButton.appearance().cornerRadius = 20;
仅将样式应用于MyButton
类的按钮。这允许您通过简单地继承UIButton
并处理子类的外观来为类中的按钮定义不同的外观和感觉。
答案 1 :(得分:1)
你应该继承UIbutton
。在您的子类中,覆盖awakeFromNib
并将代码粘贴到那里。在Storyboard中,当您引用按钮时,打开助理编辑器并选择第三个选项卡。您可以在此处提供自定义类名。
答案 2 :(得分:1)
使用此代码将故事板插座作为属性
extension UIView {
@IBInspectable var cornerRadius: CGFloat
{
get {
return layer.cornerRadius
}
set {
layer.cornerRadius = newValue
layer.masksToBounds = newValue > 0
}
}
@IBInspectable var cornerWidth: CGFloat
{
get {
return layer.borderWidth
}
set {
layer.borderWidth = newValue
}
}
@IBInspectable var borderColor: UIColor
{
set{ self.layer.borderColor = newValue.cgColor }
get{ return UIColor(cgColor: self.layer.borderColor!) }
}
}
答案 3 :(得分:0)
选择按钮并转到Identity inspector
,单击用户定义的运行时属性编辑器左下角的Add button (+)
。双击新属性的Key Path field
,将属性的关键路径编辑为layer.cornerRadius
将类型设置为Number
,将值设置为8
。要从方形按钮制作圆形按钮,半径设置为按钮宽度的一半。或者您可以添加此代码,我发现第一种方法更容易,但您可以决定使用哪种代码。
button.layer.borderWidth = 2
button.layer.cornerRadius = 8
button.clipsToBounds = true
答案 4 :(得分:0)
使用此功能,您可以应用于所有按钮。 复制/粘贴到您的帮助程序并使用。
您可以从故事板中修改按钮。只需将此类添加到任何按钮。 (将此类添加到故事板中的任何按钮)
@IBDesignable
class RoundedButton: UIButton {
override func awakeFromNib() {
super.awakeFromNib()
layer.cornerRadius = frame.size.height / 2
clipsToBounds = true
imageView?.contentMode = .scaleAspectFit
}
@IBInspectable var borderWidth: CGFloat = 0 {
didSet {
layer.borderWidth = borderWidth
}
}
@IBInspectable var borderColor: UIColor? {
didSet {
layer.borderColor = borderColor?.cgColor
}
}
@IBInspectable var bgColor: UIColor? {
didSet {
backgroundColor = bgColor
}
}
override var isHighlighted: Bool {
didSet {
if isHighlighted{
backgroundColor = backgroundColor?.alpha(0.6)
}else{
backgroundColor = backgroundColor?.alpha(1)
}
}
}
}