swift按钮太小无法点击_swift 按钮点击 - CSDN
  • 维护一个Swift项目,一UIButton按钮,图的大小是20x20,在被点击是很多时候感觉点击不了,想要增大点击区域,又不能改变图的大小(否则,美观就出问题了)。 1.UIButton 设置Frame时, setBackgroundImage时会缩放...

    维护一个Swift项目,一UIButton按钮,图的大小是20x20,在被点击是很多时候感觉点击不了,想要增大点击区域,又不能改变图的大小(否则,美观就出问题了)。
    问题解决,代码如下:

    CGRect rightBtnRect = self.rightButton.frame;
    rightBtnRect.size.height = 50;
    rightBtnRect.size.width = 50;
    rightBtnRect.origin.x = rightBtnRect.origin.x + 5;
    rightBtnRect.origin.y = rightBtnRect.origin.y - 15;
    self.rightButton.frame = rightBtnRect;
    
    UIImage *rightBtnImage = [UIImage imageNamed:@"home_rightsidebar_img_person"];
    rightBtnImage = [rightBtnImage imageWithRenderingMode:UIImageRenderingModeAlwaysOriginal];[self.rightButton setImage:rightBtnImage forState:UIControlStateNormal];

    在实现代码时,处理了几个问题
    1.UIButton 设置Frame时,增大了UIButton区域, setBackgroundImage时会缩放图片,导致图片模糊,使用了UIButton的setImage
    2.使用UIButton setImage时,图片的颜色居然变成了蓝色,设置UIImage属性UIImageRenderingModeAlwaysOriginal

    问题得以解决。

    Perfect

    展开全文
  • Swift按钮处理方法

    2015-12-30 10:21:03
    1,按钮的创建 (1)按钮有下面四种类型: UIButtonType.ContactAdd:前面带“+”图标按钮,默认文字颜色为蓝色,有触摸时的高亮效果 UIButtonType.DetailDisclosure:前面带“!”图标按钮,默认文字颜色为蓝色,...
    1,按钮的创建
    (1)按钮有下面四种类型:
    UIButtonType.ContactAdd:前面带“+”图标按钮,默认文字颜色为蓝色,有触摸时的高亮效果
    UIButtonType.DetailDisclosure:前面带“!”图标按钮,默认文字颜色为蓝色,有触摸时的高亮效果
    UIButtonType.System:前面不带图标,默认文字颜色为蓝色,有触摸时的高亮效果
    UIButtonType.Custom:定制按钮,前面不带图标,默认文字颜色为白色,无触摸时的高亮效果
    UIButtonType.InfoDark:为感叹号“!”圆形按钮
    UIButtonType.InfoLight:为感叹号“!”圆形按钮
    1
    2
    3
    4
    5
    6
    7
    //创建一个ContactAdd类型的按钮
    let button:UIButton UIButton(type:.ContactAdd)
    //设置按钮位置和大小
    button.frame=CGRectMake(10, 150, 100, 30)
    //设置按钮文字
    button.setTitle("按钮", forState:UIControlState.Normal)
    self.view.addSubview(button);
    (2)对于Custom定制类型按钮,代码可简化为:
    1
    let button = UIButton(frame:CGRectMake(10, 150, 100, 30))

    2,按钮的文字设置
    1
    2
    3
    button.setTitle("普通状态", forState:UIControlState.Normal//普通状态下的文字
    button.setTitle("触摸状态", forState:UIControlState.Highlighted//触摸状态下的文字
    button.setTitle("禁用状态", forState:UIControlState.Disabled//禁用状态下的文字

    3,按钮文字颜色的设置
    1
    2
    3
    button.setTitleColor(UIColor.blackColor(),forState: .Normal//普通状态下文字的颜色
    button.setTitleColor(UIColor.greenColor(),forState: .Highlighted//触摸状态下文字的颜色
    button.setTitleColor(UIColor.grayColor(),forState: .Disabled//禁用状态下文字的颜色

    4,按钮文字阴影颜色的设置
    1
    2
    3
    button.setTitleShadowColor(UIColor.greenColor(),forState:.Normal//普通状态下文字阴影的颜色
    button.setTitleShadowColor(UIColor.yellowColor(),forState:.Highlighted//普通状态下文字阴影的颜色
    button.setTitleShadowColor(UIColor.grayColor(),forState:.Disabled//普通状态下文字阴影的颜色

    5,按钮背景颜色设置
    1
    button.backgroundColor=UIColor.blackColor()

    6,按钮文字图标的设置
    1
    2
    3
    button.setImage(UIImage(named:"icon1"),forState:.Normal)  //设置图标
    button.adjustsImageWhenHighlighted=false //使触摸模式下按钮也不会变暗
    button.adjustsImageWhenDisabled=false //使禁用模式下按钮也不会变暗

    7,设置按钮背景图片
    1
    button.setBackgroundImage(UIImage(named:"background1"),forState:.Normal)

    8,按钮触摸点击事件响应
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    //不传递触摸对象(即点击的按钮)
    button.addTarget(self,action:Selector("tapped"),forControlEvents:.TouchUpInside)
    func tapped(){
       print("tapped")
    }
     
    //传递触摸对象(即点击的按钮),需要在定义action参数时,方法名称后面带上冒号
    button.addTarget(self,action:Selector("tapped:"),forControlEvents:.TouchUpInside)
    func tapped(button:UIButton){
       print(button.titleForState(.Normal))
    }
    常用的触摸事件类型:
    TouchDown:单点触摸按下事件,点触屏幕
    TouchDownRepeat:多点触摸按下事件,点触计数大于1,按下第2、3或第4根手指的时候
    TouchDragInside:触摸在控件内拖动时
    TouchDragOutside:触摸在控件外拖动时
    TouchDragEnter:触摸从控件之外拖动到内部时
    TouchDragExit:触摸从控件内部拖动到外部时
    TouchUpInside:在控件之内触摸并抬起事件
    TouchUpOutside:在控件之外触摸抬起事件
    TouchCancel:触摸取消事件,即一次触摸因为放上太多手指而被取消,或者电话打断
    展开全文
  • // MARK:扩展按钮点击区域 import Foundation func associatedObject<ValueType: AnyObject>( base: AnyObject, key: UnsafePointer<UInt8>, initialiser: () -> Value...
    // MARK:扩展按钮的点击区域
    import Foundation
    func associatedObject<ValueType: AnyObject>(
        base: AnyObject,
        key: UnsafePointer<UInt8>,
        initialiser: () -> ValueType)
        -> ValueType {
            if let associated = objc_getAssociatedObject(base, key)
                as? ValueType { return associated }
            let associated = initialiser()
            objc_setAssociatedObject(base, key, associated,
                                     .OBJC_ASSOCIATION_RETAIN)
            return associated
    }
    func associateObject<ValueType: AnyObject>(
        base: AnyObject,
        key: UnsafePointer<UInt8>,
        value: ValueType) {
        objc_setAssociatedObject(base, key, value,
                                 .OBJC_ASSOCIATION_RETAIN)
    }
    
    private var topKey: UInt8 = 0
    private var bottomKey: UInt8 = 0
    private var leftKey: UInt8 = 0
    private var rightKey: UInt8 = 0
    extension UIButton {
        var top: NSNumber {
            get {
                return associatedObject(base: self, key: &topKey)
                { return 0 }
            }
            set {
                associateObject(base: self, key: &topKey, value: newValue)
            }
        }
        
        var bottom: NSNumber {
            get {
                return associatedObject(base: self, key: &bottomKey)
                { return 0 }
            }
            set {
                associateObject(base: self, key: &bottomKey, value: newValue)
            }
        }
        
        var left: NSNumber {
            get {
                return associatedObject(base: self, key: &leftKey)
                { return 0 }
            }
            set {
                associateObject(base: self, key: &leftKey, value: newValue)
            }
        }
        
        var right: NSNumber {
            get {
                return associatedObject(base: self, key: &rightKey)
                { return 0 }
            }
            set {
                associateObject(base: self, key: &rightKey, value: newValue)
            }
        }
        
        func setEnlargeEdge(top: Float, bottom: Float, left: Float, right: Float) -> Void {
            self.top = NSNumber.init(value: top)
            self.bottom = NSNumber.init(value: bottom)
            self.left = NSNumber.init(value: left)
            self.right = NSNumber.init(value: right)
        }
        
        func enlargedRect() -> CGRect {
            let top = self.top
            let bottom = self.bottom
            let left = self.left
            let right = self.right
            if top.floatValue >= 0, bottom.floatValue >= 0, left.floatValue >= 0, right.floatValue >= 0 {
                return CGRect.init(x: self.bounds.origin.x - CGFloat(left.floatValue),
                                   y: self.bounds.origin.y - CGFloat(top.floatValue),
                                   width: self.bounds.size.width + CGFloat(left.floatValue) + CGFloat(right.floatValue),
                                   height: self.bounds.size.height + CGFloat(top.floatValue) + CGFloat(bottom.floatValue))
            }
            else {
                return self.bounds
            }
        }
        
        open override func point(inside point: CGPoint, with event: UIEvent?) -> Bool {
            let rect = self.enlargedRect()
            if rect.equalTo(self.bounds) {
                return super.point(inside: point, with: event)
            }
            return rect.contains(point) ? true : false
        }
    }
    复制代码

    参考1:Swift 扩展「可以」添加存储属性

    参考2:OC为按钮增加点击区域

    展开全文
  • 1,按钮的创建 (1)按钮有下面四种类型: UIButtonType.ContactAdd:前面带“+”图标按钮,默认文字颜色为蓝色,有触摸时的高亮效果 UIButtonType.DetailDisclosure:前面带“!”图标按钮,默认文字颜色为蓝色,...
    1,按钮的创建
    (1)按钮有下面四种类型:
    UIButtonType.ContactAdd:前面带“+”图标按钮,默认文字颜色为蓝色,有触摸时的高亮效果
    UIButtonType.DetailDisclosure:前面带“!”图标按钮,默认文字颜色为蓝色,有触摸时的高亮效果
    UIButtonType.System:前面不带图标,默认文字颜色为蓝色,有触摸时的高亮效果
    UIButtonType.Custom:定制按钮,前面不带图标,默认文字颜色为白色,无触摸时的高亮效果
    UIButtonType.InfoDark:为感叹号“!”圆形按钮
    UIButtonType.InfoLight:为感叹号“!”圆形按钮
    1
    2
    3
    4
    5
    6
    7
    //创建一个ContactAdd类型的按钮
    var button:UIButton = UIButton.buttonWithType(UIButtonType.ContactAdd) as UIButton;
    //设置按钮位置和大小
    button.frame=CGRectMake(10, 150, 100, 30);
    //设置按钮文字
    button.setTitle("按钮", forState:UIControlState.Normal)
    self.view.addSubview(button);
    (2)对于Custom定制类型按钮,代码可简化为:
    1
    var button = UIButton(frame:CGRectMake(10, 150, 100, 30))

    2,按钮的文字设置
    1
    2
    3
    button.setTitle("普通状态", forState:UIControlState.Normal) //普通状态下的文字
    button.setTitle("触摸状态", forState:UIControlState.Highlighted) //触摸状态下的文字
    button.setTitle("禁用状态", forState:UIControlState.Disabled) //禁用状态下的文字

    3,按钮文字颜色的设置
    1
    2
    3
    button.setTitleColor(UIColor.blackColor(),forState: .Normal) //普通状态下文字的颜色
    button.setTitleColor(UIColor.greenColor(),forState: .Highlighted) //触摸状态下文字的颜色
    button.setTitleColor(UIColor.grayColor(),forState: .Disabled) //禁用状态下文字的颜色

    4,按钮文字阴影颜色的设置
    1
    2
    3
    button.setTitleShadowColor(UIColor.greenColor(),forState:.Normal) //普通状态下文字阴影的颜色
    button.setTitleShadowColor(UIColor.yellowColor(),forState:.Highlighted) //普通状态下文字阴影的颜色
    button.setTitleShadowColor(UIColor.grayColor(),forState:.Disabled) //普通状态下文字阴影的颜色

    5,按钮背景颜色设置
    1
    button.backgroundColor=UIColor.blackColor()

    6,按钮文字图标的设置
    1
    2
    3
    button.setImage(UIImage(named:"icon1"),forState:.Normal//设置图标
    button.adjustsImageWhenHighlighted=false //使触摸模式下按钮也不会变暗
    button.adjustsImageWhenDisabled=false //使禁用模式下按钮也不会变暗

    7,设置按钮背景图片
    1
    button.setBackgroundImage(UIImage(named:"background1"),forState:.Normal)

    8,按钮触摸点击事件响应
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    //不传递触摸对象(即点击的按钮)
    button.addTarget(self,action:Selector("tapped"),forControlEvents:UIControlEvents.TouchUpInside)
    func tapped(){
       println("tapped")
    }
     
    //传递触摸对象(即点击的按钮),需要在定义action参数时,方法名称后面带上冒号
    button.addTarget(self,action:Selector("tapped:"),forControlEvents:UIControlEvents.TouchUpInside)
    func tapped(button:UIButton){
       println(button.titleForState(.Normal))
    }
    常用的触摸事件类型:
    TouchDown:单点触摸按下事件,点触屏幕
    TouchDownRepeat:多点触摸按下事件,点触计数大于1,按下第2、3或第4根手指的时候
    TouchDragInside:触摸在控件内拖动时
    TouchDragOutside:触摸在控件外拖动时
    TouchDragEnter:触摸从控件之外拖动到内部时
    TouchDragExit:触摸从控件内部拖动到外部时
    TouchUpInside:在控件之内触摸并抬起事件
    TouchUpOutside:在控件之外触摸抬起事件
    TouchCancel:触摸取消事件,即一次触摸因为放上太多手指而被取消,或者电话打断

    转载地址:http://www.hangge.com/blog/cache/detail_529.html
    展开全文
  • (本文代码已升级至Swift3) 项目中常常会使用 UINavigationController 对各个页面进行导航,导航栏左侧的返回按钮默认标题文字是上级页面的title。 但如果上级页面的标题很长,那么这个返回按钮字很...
  • 其实很简单,主要是系统提供的几种震动方式 主要在这个AudioTool.framework里 #import <AudioToolbox/AudioToolbox.h> 一般震动 AudioServicesPlaySystemSound(kSystemSoundID_Vibrate);...
  • 1,按钮的创建 (1)按钮有下面四种类型: UIButtonType.ContactAdd:前面带“+”图标按钮,默认文字颜色为蓝色,有触摸时的高亮效果 UIButtonType.DetailDisclosure:前面带“!”图标按钮,默认文字颜色为蓝色,...
  • 项目中用到UISearchController,点击后需要显示SearchResultController,并且把tabBar隐藏,做完后发现即使tabBar隐藏了,原先位置下的button不可点击。网上的帖子都在复制粘贴,实在是效率低,并且没什么作用,...
  • 1、创建一个按钮对象,如下代码所示: let btn=UIButton(type:UIButtonType.System); 其中UIButtonType还有以下几种类型,如下说明以及运行效果图: //Custom //表示没有按钮类型,如果使用此类型,字体颜色为...
  • 1,按钮的创建 (1)按钮有下面四种类型: UIButtonType.ContactAdd:前面带“+”图标按钮,默认文字颜色为蓝色,有触摸时的高亮效果 UIButtonType.DetailDisclosure:前面带“!”图标按钮,默认文字颜色为...
  • 最近终于想好了自己发展方向,决定学一学相关的知识,第一课决定从微信的视频学起,而视频的第一步就是点击按钮的制作。照例先放效果图 这个按钮提供了轻触和长按两种回掉,长按回掉里还包括了正常回掉和录制...
  • 之前用objective-c开发时,页面之间的切换很容易。其实用swift没有很大的变化,如果你是用storyboard完成的界面,基本上是同样的方式,只...我的程序结构是这样的,在一个页面A中有个按钮,然后点击按钮以后,切换到
  • 更新:所有代码已经更新到Swift4.1,请移步github下载 =============================================...无意中听说了有一个叫Sam Lu在Twitter上发起了一个100天做40个Swift小程序的活动,再加上国内看到了Allen_朝...
  • 本文我们将讨论SwiftUI中的另一个核心流程。我们将学习布置视图的过程。我们将了解SwiftUI如何计算视图的位置和大小,以及如何使用布局优先级更改该过程。 推荐文章 TextField篇 《SwiftUI 一篇文章全面掌握...
1 2 3 4 5 ... 20
收藏数 2,849
精华内容 1,139
关键字:

swift按钮太小无法点击