最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

iOS UIButton擴(kuò)大按鈕響應(yīng)區(qū)域的解決方法

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

在開發(fā)中有時(shí)會遇見設(shè)計(jì)圖里按鈕設(shè)計(jì)的特別小,這時(shí)會用到手動(dòng)擴(kuò)大UIButton的響應(yīng)范圍,下面有兩個(gè)解決辦法:

第一種方法:創(chuàng)建一個(gè)類目: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)建一個(gè)UIButton類,然后復(fù)寫pointInside方法

使用時(shí)繼承于此類即可

.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

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

以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • iOS開發(fā)中對文件目錄的訪問及管理的基本方法小結(jié)

    iOS開發(fā)中對文件目錄的訪問及管理的基本方法小結(jié)

    這篇文章主要介紹了iOS開發(fā)中對文件目錄的訪問及管理的基本方法小結(jié),代碼基于傳統(tǒng)的Objective-C,需要的朋友可以參考下
    2015-10-10
  • iOS開發(fā)教程之WKWebView與JS的交互

    iOS開發(fā)教程之WKWebView與JS的交互

    這篇文章主要給大家介紹了關(guān)于iOS開發(fā)教程之WKWebView與JS的交互的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對各位iOS開發(fā)者們具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-07-07
  • IOS App 無代碼入侵的方法hook詳細(xì)介紹

    IOS App 無代碼入侵的方法hook詳細(xì)介紹

    這篇文章主要介紹了IOS App 無代碼入侵的方法hook詳細(xì)介紹的相關(guān)資料,需要的朋友可以參考下
    2016-12-12
  • 詳解ios中自定義cell,自定義UITableViewCell

    詳解ios中自定義cell,自定義UITableViewCell

    本篇文章主要介紹了ios中自定義cell,自定義UITableViewCell,非常具有實(shí)用價(jià)值,需要的朋友可以參考下。
    2016-12-12
  • iOS實(shí)現(xiàn)圓角箭頭視圖

    iOS實(shí)現(xiàn)圓角箭頭視圖

    這篇文章主要為大家詳細(xì)介紹了iOS實(shí)現(xiàn)圓角箭頭視圖,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2021-04-04
  • iOS AVCaptureSession實(shí)現(xiàn)視頻錄制功能

    iOS AVCaptureSession實(shí)現(xiàn)視頻錄制功能

    這篇文章主要為大家詳細(xì)介紹了iOS AVCaptureSession實(shí)現(xiàn)視頻錄制功能,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2018-05-05
  • 解決iOS調(diào)起微信支付顯示系統(tǒng)繁忙問題

    解決iOS調(diào)起微信支付顯示系統(tǒng)繁忙問題

    這篇文章主要介紹了解決iOS調(diào)起微信支付顯示系統(tǒng)繁忙問題,需要的朋友可以參考下
    2016-12-12
  • iOS開發(fā)探索多線程GCD隊(duì)列示例詳解

    iOS開發(fā)探索多線程GCD隊(duì)列示例詳解

    這篇文章主要為大家介紹了iOS開發(fā)探索多線程GCD隊(duì)列示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-07-07
  • IOS代碼筆記UIView的placeholder的效果

    IOS代碼筆記UIView的placeholder的效果

    這篇文章主要為大家詳細(xì)介紹了IOS實(shí)現(xiàn)placeholder效果的相關(guān)資料,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2016-07-07
  • iOS 定制多樣式二維碼

    iOS 定制多樣式二維碼

    最常見的二維碼功能包括信息獲取、網(wǎng)站跳轉(zhuǎn)、電商交易、手機(jī)支付等等,其擁有密度小、信息容量大、容錯(cuò)能力強(qiáng)、成本低、制作難度低等優(yōu)點(diǎn)。在移動(dòng)開發(fā)中,二維碼的地位也越來越重要,掌握二維碼的基本操作是重要的本領(lǐng)之一。本文將講解iOS定制二維碼的步驟與方法。
    2017-03-03

最新評論

大石桥市| 常熟市| 莲花县| 封丘县| 洱源县| 麦盖提县| 微山县| 宝应县| 新竹市| 鹿泉市| 南宁市| 新巴尔虎左旗| 刚察县| 太保市| 新巴尔虎左旗| 蓝田县| 教育| 乃东县| 乐昌市| 乌兰察布市| 霍城县| 屏山县| 新野县| 陈巴尔虎旗| 清徐县| 台山市| 湘西| 稻城县| 剑阁县| 邻水| 株洲县| 巴塘县| 崇州市| 大冶市| 准格尔旗| 溆浦县| 扶绥县| 利川市| 阳谷县| 邯郸县| 上犹县|