亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

iOS UIButton擴大按鈕響應區(qū)域的解決方法

 更新時間:2018年08月29日 14:25:54   作者:Jaycee麥子  
這篇文章主要為大家詳細介紹了iOS UIButton擴大按鈕響應區(qū)域的解決方法,具有一定的參考價值,感興趣的小伙伴們可以參考一下

在開發(fā)中有時會遇見設計圖里按鈕設計的特別小,這時會用到手動擴大UIButton的響應范圍,下面有兩個解決辦法:

第一種方法:創(chuàng)建一個類目:UIButton+EnlargeTouchArea

.h文件

#import <UIKit/UIKit.h>
 
@interface UIButton (EnlargeTouchArea)
 
- (void)setEnlargeEdgeWithTop:(CGFloat) top right:(CGFloat) right bottom:(CGFloat) bottom left:(CGFloat) left; 
- (void)setEnlargeEdge:(CGFloat) size;
 
@end

.m文件

 //
// UIButton+EnlargeTouchArea.m
// HeBeiFM
//
// Created by Apple on 16/4/27.
// Copyright © 2016年 Apple. All rights reserved.
//
 
#import "UIButton+EnlargeTouchArea.h"
#import <objc/runtime.h>
 
@implementation UIButton (EnlargeTouchArea)
 
static char topNameKey;
static char rightNameKey;
static char bottomNameKey;
static char leftNameKey;
 
- (void)setEnlargeEdge:(CGFloat) size
{
 objc_setAssociatedObject(self, &topNameKey, [NSNumber numberWithFloat:size], OBJC_ASSOCIATION_COPY_NONATOMIC);
 objc_setAssociatedObject(self, &rightNameKey, [NSNumber numberWithFloat:size], OBJC_ASSOCIATION_COPY_NONATOMIC);
 objc_setAssociatedObject(self, &bottomNameKey, [NSNumber numberWithFloat:size], OBJC_ASSOCIATION_COPY_NONATOMIC);
 objc_setAssociatedObject(self, &leftNameKey, [NSNumber numberWithFloat:size], OBJC_ASSOCIATION_COPY_NONATOMIC);
}
 
- (void) setEnlargeEdgeWithTop:(CGFloat) top right:(CGFloat) right bottom:(CGFloat) bottom left:(CGFloat) left
{
 objc_setAssociatedObject(self, &topNameKey, [NSNumber numberWithFloat:top], OBJC_ASSOCIATION_COPY_NONATOMIC);
 objc_setAssociatedObject(self, &rightNameKey, [NSNumber numberWithFloat:right], OBJC_ASSOCIATION_COPY_NONATOMIC);
 objc_setAssociatedObject(self, &bottomNameKey, [NSNumber numberWithFloat:bottom], OBJC_ASSOCIATION_COPY_NONATOMIC);
 objc_setAssociatedObject(self, &leftNameKey, [NSNumber numberWithFloat:left], OBJC_ASSOCIATION_COPY_NONATOMIC);
}
 
- (CGRect) enlargedRect
{
 NSNumber* topEdge = objc_getAssociatedObject(self, &topNameKey);
 NSNumber* rightEdge = objc_getAssociatedObject(self, &rightNameKey);
 NSNumber* bottomEdge = objc_getAssociatedObject(self, &bottomNameKey);
 NSNumber* leftEdge = objc_getAssociatedObject(self, &leftNameKey);
 if (topEdge && rightEdge && bottomEdge && leftEdge)
 {
  return CGRectMake(self.bounds.origin.x - leftEdge.floatValue,
       self.bounds.origin.y - topEdge.floatValue,
       self.bounds.size.width + leftEdge.floatValue + rightEdge.floatValue,
       self.bounds.size.height + topEdge.floatValue + bottomEdge.floatValue);
 }
 else
 {
  return self.bounds;
 }
}
 
- (UIView*) hitTest:(CGPoint) point withEvent:(UIEvent*) event
{
 CGRect rect = [self enlargedRect];
 if (CGRectEqualToRect(rect, self.bounds))
 {
  return [super hitTest:point withEvent:event];
 }
 return CGRectContainsPoint(rect, point) ? self : nil;
}
 
@end

使用方法:

UIButton *button = [UIButton new];
[button setEnlargeEdge:20];
 //或者
 [button setEnlargeEdgeWithTop:20 right:20 bottom:20 left:20]; 

第二種:直接創(chuàng)建一個UIButton類,然后復寫pointInside方法

使用時繼承于此類即可

.h文件

#import <UIKit/UIKit.h>
 
@interface BiggerClickAreaButton : UIButton
 
@end

.m文件

#import "BiggerClickAreaButton.h"
 
@implementation BiggerClickAreaButton
 
- (BOOL)pointInside:(CGPoint)point withEvent:(UIEvent*)event
{
 CGRect bounds = self.bounds;
 //若原熱區(qū)小于44x44,則放大熱區(qū),否則保持原大小不變
 CGFloat widthDelta = MAX(44.0 - bounds.size.width, 0);
 CGFloat heightDelta = MAX(44.0 - bounds.size.height, 0);
 bounds = CGRectInset(bounds, -0.5 * widthDelta, -0.5 * heightDelta);
 return CGRectContainsPoint(bounds, point);
}
 
 
@end

使用時直接繼承創(chuàng)建即可。

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持腳本之家。

相關文章

  • iOS中如何引用另一個工程的方法教程

    iOS中如何引用另一個工程的方法教程

    在iOS開發(fā)中,引用另一個工程是大家可能會遇到的一個問題,所以這篇文章主要給大家介紹了關于iOS中如何引用另一個工程的相關資料,文中通過圖文介紹的非常詳細,對各位iOS開發(fā)者們具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧。
    2017-11-11
  • IOS 開發(fā)之自定義按鈕實現(xiàn)文字圖片位置隨意定制

    IOS 開發(fā)之自定義按鈕實現(xiàn)文字圖片位置隨意定制

    這篇文章主要介紹了IOS 開發(fā)之自定義按鈕實現(xiàn)文字圖片位置隨意定制的相關資料,這里附有實例代碼及實現(xiàn)效果圖,需要的朋友可以參考下
    2016-12-12
  • iOS 10撥打系統(tǒng)電話彈出框延遲出現(xiàn)問題的解決

    iOS 10撥打系統(tǒng)電話彈出框延遲出現(xiàn)問題的解決

    iOS10的到來,帶來了條幅和鎖屏界面的重新設計,美觀又好看,再加上抬腕喚醒功能,查看需要的信息確實更便捷了,還能快捷回復一些通知,十分輕松,但同樣有問題,下面這篇文章主要給大家介紹了關于iOS 10撥打系統(tǒng)電話彈出框延遲出現(xiàn)問題的解決方法,需要的朋友可以參考下。
    2017-10-10
  • 詳解 IOS下int long longlong的取值范圍

    詳解 IOS下int long longlong的取值范圍

    這篇文章主要介紹了詳解 IOS下int long longlong的取值范圍的相關資料,需要的朋友可以參考下
    2017-07-07
  • 詳解iOS 滾動視圖的復用問題解決方案

    詳解iOS 滾動視圖的復用問題解決方案

    本篇文章主要介紹iOS 滾動視圖的復用問題解決方案,具有一定的參考價值,有興趣的可以了解一下。
    2016-12-12
  • IOS Object-C 中Runtime詳解及實例代碼

    IOS Object-C 中Runtime詳解及實例代碼

    這篇文章主要介紹了IOS Object-C 中Runtime詳解及實例代碼的相關資料,OC中的對象其實在Runtime中都會用結構體來表示,這個結構體中包含了類名、成員變量列表、方法列表、協(xié)議列表、緩存等,需要的朋友可以參考下
    2017-03-03
  • ios多種語言的本地化思路

    ios多種語言的本地化思路

    ios程序實現(xiàn)多種語言的本地化辦法,最近要對一款游戲進行多語言本地化,在網上找了一些方案,加上自己的一點點想法整理出一套方案和大家分享!
    2015-05-05
  • 關于iOS中的各種顏色設置總結大全(推薦)

    關于iOS中的各種顏色設置總結大全(推薦)

    這篇文章主要給大家介紹了關于iOS中顏色設置的相關資料,其中包括導航欄、狀態(tài)欄、Tabbar、Button、TextField、AttributedString和通用部分的顏色設置方法示例,對大家具有一定的參考學習價值,需要的朋友們下面隨著小編來一起看看吧。
    2017-09-09
  • IOS獲取各種文件目錄路徑的方法

    IOS獲取各種文件目錄路徑的方法

    ios獲取文件路徑的方法,iphone沙箱模型的四個文件夾,通過documents,tmp,app,Library得到模擬器路徑的簡單方式,下面小編整理相關資料,把IOS獲取各種文件目錄路徑的方式總結如下,需要的朋友可以參考下
    2015-08-08
  • iOS應用開發(fā)中視圖控件UIWindow的基本使用教程

    iOS應用開發(fā)中視圖控件UIWindow的基本使用教程

    這篇文章主要介紹了iOS應用開發(fā)中視圖控件UIWindow的基本使用教程,代碼基于傳統(tǒng)的Objective-C,需要的朋友可以參考下
    2016-02-02

最新評論